Skip to content

Instantly share code, notes, and snippets.

@okwrtdsh
Created June 21, 2019 13:34
Show Gist options
  • Save okwrtdsh/f08305ceb8f7b25758c7a0ced50a40d5 to your computer and use it in GitHub Desktop.
Save okwrtdsh/f08305ceb8f7b25758c7a0ced50a40d5 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 環境\n",
"* Docker Image: [okwrtdsh/anaconda3:cpu](https://hub.docker.com/r/okwrtdsh/anaconda3)\n",
"\n",
"```\n",
"$ docker run -v $(pwd):/src/notebooks -p 8888:8888 -td okwrtdsh/anaconda3:cpu\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# !pip install -U git+https://github.com/scikit-learn-contrib/imbalanced-learn.git\n",
"# !pip install xgboost\n",
"# !pip install lightgbm"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import re\n",
"import random\n",
"random.seed(0)\n",
"import warnings\n",
"warnings.simplefilter(action='ignore', category=FutureWarning)\n",
"warnings.simplefilter(action='ignore', category=DeprecationWarning)\n",
"import numpy as np\n",
"np.random.seed(0)\n",
"import pandas as pd\n",
"from matplotlib import pyplot as plt\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def load_data():\n",
" df_train = pd.read_csv(\"./train.csv\")\n",
" df_test = pd.read_csv(\"./test.csv\")\n",
" return df_train, df_test"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def transform(df):\n",
" # month\n",
" months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']\n",
" df['n_month'] = df['month'].apply(lambda x: (months.index(x)+1)).astype(np.uint8)\n",
"\n",
" # yes no\n",
" yesno_cols = ['default', 'housing', 'loan', 'y']\n",
" for col in yesno_cols:\n",
" df[col] = df[col].apply(lambda x: ['no', 'yes'].index(x)).astype(np.uint8)\n",
" \n",
" # dummy\n",
" category_cols = ['job', 'housing', 'marital', 'education', 'contact', 'poutcome', 'month']\n",
" df = pd.concat([df.drop(columns=category_cols), pd.get_dummies(df[category_cols])], axis=1)\n",
" return df"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import GridSearchCV\n",
"from sklearn.metrics import make_scorer\n",
"from sklearn.metrics import accuracy_score, classification_report, confusion_matrix, f1_score, roc_auc_score\n",
"\n",
"\n",
"def train_cv(model_cls, df_train, features, params, target='y', show_importance=True, refit='Accuracy'):\n",
" if not features:\n",
" features = df_train.corr().columns.tolist()\n",
" if target in features:\n",
" features.pop(features.index(target))\n",
" train = df_train[[target] + features]\n",
" X_train = train[features].fillna(0).values\n",
" y_train = train[target].values\n",
" scoring = {\n",
" 'AUC': make_scorer(roc_auc_score),\n",
" 'Accuracy': make_scorer(accuracy_score),\n",
" 'F1': make_scorer(f1_score)}\n",
" clf = GridSearchCV(\n",
" model_cls(), param_grid=params, cv=5, n_jobs=4,\n",
" scoring=scoring, refit=refit, return_train_score=True)\n",
" clf.fit(X_train, y_train)\n",
" print('best params:', clf.best_params_)\n",
" print('best mean val score: ', clf.best_score_)\n",
" clf_best = model_cls(**clf.best_params_)\n",
" clf_best.fit(X_train, y_train)\n",
" if show_importance:\n",
" plt.figure(figsize=(10, 20))\n",
" df_fi = pd.DataFrame(\n",
" {'feature': features, 'feature_importance': clf.best_estimator_.feature_importances_[:]}\n",
" ).sort_values('feature_importance', ascending=False)\n",
" sns.barplot(x=df_fi['feature_importance'], y=df_fi['feature'])\n",
" plt.show()\n",
" return clf_best, pd.DataFrame(clf.cv_results_), df_fi['feature'].tolist()\n",
" else:\n",
" return clf_best, pd.DataFrame(clf.cv_results_)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import accuracy_score, classification_report, confusion_matrix, f1_score\n",
"from sklearn.utils.multiclass import unique_labels\n",
"\n",
"def test_result(clf, df_test, features, target='y', normalize=False, th=0.5, save=False):\n",
" y_pred = clf.predict(df_test[features].fillna(0).values)\n",
" y_true = df_test[target].values\n",
" if th == \"auto\":\n",
" ths = np.arange(0.01, 0.99, 0.001)\n",
" f1s = np.array([f1_score(y_true, (y_pred > t).astype(np.uint8)) for t in ths])\n",
" plt.plot(ths, f1s)\n",
" th = ths[f1s.argmax()]\n",
" y_pred = (y_pred > th).astype(np.uint8)\n",
" print(\"accuracy: \", accuracy_score(y_true, y_pred))\n",
" print(classification_report(y_true, y_pred))\n",
" cm = confusion_matrix(y_true, y_pred)\n",
" if normalize:\n",
" cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
" classes = ['no', 'yes']\n",
" fig = plt.figure()\n",
" plt.imshow(cm, interpolation='nearest', cmap='Blues')\n",
" plt.colorbar()\n",
" ax = plt.gca()\n",
" ax.set(\n",
" xticks=np.arange(cm.shape[1]),\n",
" yticks=np.arange(cm.shape[0]),\n",
" xticklabels=classes, yticklabels=classes,\n",
" title='',\n",
" ylabel='True',\n",
" xlabel='Predicted')\n",
" plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\", rotation_mode=\"anchor\")\n",
" fmt = '.2f' if normalize else 'd'\n",
" thresh = cm.max() / 2.\n",
" for i in range(cm.shape[0]):\n",
" for j in range(cm.shape[1]):\n",
" ax.text(j, i, format(cm[i, j], fmt),\n",
" ha=\"center\", va=\"center\",\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
" fig.tight_layout()\n",
" if save:\n",
" plt.savefig('result.pdf', dpi=100)\n",
" else:\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def to_result_df(df):\n",
" return df.sort_values('rank_test_Accuracy', ascending=True)[\n",
" sorted([\n",
" col for col in df.columns.tolist()\n",
" if not col.startswith('split') and not col.startswith('std') and col not in [\n",
" 'params', 'mean_fit_time', 'std_fit_time',\n",
" 'mean_score_time', 'std_score_time', 'param_random_state']])]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>default</th>\n",
" <th>balance</th>\n",
" <th>loan</th>\n",
" <th>day</th>\n",
" <th>duration</th>\n",
" <th>campaign</th>\n",
" <th>pdays</th>\n",
" <th>previous</th>\n",
" <th>y</th>\n",
" <th>...</th>\n",
" <th>month_dec</th>\n",
" <th>month_feb</th>\n",
" <th>month_jan</th>\n",
" <th>month_jul</th>\n",
" <th>month_jun</th>\n",
" <th>month_mar</th>\n",
" <th>month_may</th>\n",
" <th>month_nov</th>\n",
" <th>month_oct</th>\n",
" <th>month_sep</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>52</td>\n",
" <td>0</td>\n",
" <td>108</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>543</td>\n",
" <td>12</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>35</td>\n",
" <td>0</td>\n",
" <td>1055</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>59</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>37</td>\n",
" <td>0</td>\n",
" <td>32</td>\n",
" <td>0</td>\n",
" <td>20</td>\n",
" <td>146</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>57</td>\n",
" <td>0</td>\n",
" <td>2743</td>\n",
" <td>0</td>\n",
" <td>29</td>\n",
" <td>89</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>42</td>\n",
" <td>0</td>\n",
" <td>6383</td>\n",
" <td>0</td>\n",
" <td>27</td>\n",
" <td>111</td>\n",
" <td>5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 50 columns</p>\n",
"</div>"
],
"text/plain": [
" age default balance loan day duration campaign pdays previous y \\\n",
"0 52 0 108 0 15 543 12 -1 0 0 \n",
"1 35 0 1055 0 2 59 2 -1 0 0 \n",
"2 37 0 32 0 20 146 2 -1 0 0 \n",
"3 57 0 2743 0 29 89 1 -1 0 0 \n",
"4 42 0 6383 0 27 111 5 -1 0 0 \n",
"\n",
" ... month_dec month_feb month_jan month_jul month_jun \\\n",
"0 ... 0 0 0 0 0 \n",
"1 ... 0 0 0 0 0 \n",
"2 ... 0 0 0 0 0 \n",
"3 ... 0 0 1 0 0 \n",
"4 ... 0 0 0 0 0 \n",
"\n",
" month_mar month_may month_nov month_oct month_sep \n",
"0 0 1 0 0 0 \n",
"1 1 0 0 0 0 \n",
"2 0 1 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
"[5 rows x 50 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_train, df_test = load_data()\n",
"df_train = transform(df_train)\n",
"df_test = transform(df_test)\n",
"df_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"49"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"features = [\n",
" 'age',\n",
" 'default',\n",
" 'balance',\n",
" 'loan',\n",
" 'day',\n",
" 'n_month',\n",
" 'duration',\n",
" 'campaign',\n",
" 'pdays',\n",
" 'previous',\n",
" 'housing',\n",
" 'job_admin.',\n",
" 'job_blue-collar',\n",
" 'job_entrepreneur',\n",
" 'job_housemaid',\n",
" 'job_management',\n",
" 'job_retired',\n",
" 'job_self-employed',\n",
" 'job_services',\n",
" 'job_student',\n",
" 'job_technician',\n",
" 'job_unemployed',\n",
" 'job_unknown',\n",
" 'marital_divorced',\n",
" 'marital_married',\n",
" 'marital_single',\n",
" 'education_primary',\n",
" 'education_secondary',\n",
" 'education_tertiary',\n",
" 'education_unknown',\n",
" 'contact_cellular',\n",
" 'contact_telephone',\n",
" 'contact_unknown',\n",
" 'poutcome_failure',\n",
" 'poutcome_other',\n",
" 'poutcome_success',\n",
" 'poutcome_unknown',\n",
" 'month_apr',\n",
" 'month_aug',\n",
" 'month_dec',\n",
" 'month_feb',\n",
" 'month_jan',\n",
" 'month_jul',\n",
" 'month_jun',\n",
" 'month_mar',\n",
" 'month_may',\n",
" 'month_nov',\n",
" 'month_oct',\n",
" 'month_sep',\n",
"]\n",
"len(features)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best params: {'criterion': 'gini', 'max_depth': 5, 'max_leaf_nodes': 20, 'min_samples_leaf': 3, 'min_samples_split': 20, 'n_estimators': 500, 'random_state': 123}\n",
"best mean val score: 0.8942711789427118\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x1440 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"accuracy: 0.8925254312251216\n",
" precision recall f1-score support\n",
"\n",
" 0 0.89 1.00 0.94 3970\n",
" 1 0.88 0.14 0.24 552\n",
"\n",
" accuracy 0.89 4522\n",
" macro avg 0.88 0.57 0.59 4522\n",
"weighted avg 0.89 0.89 0.86 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 28.7 s, sys: 1.3 s, total: 30 s\n",
"Wall time: 1min 53s\n"
]
}
],
"source": [
"%%time\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"\n",
"params = {\n",
" 'random_state': [123],\n",
" 'n_estimators' : [500],\n",
" 'criterion': ['gini'],\n",
" 'max_depth': [5],\n",
" 'max_leaf_nodes': [20],\n",
" 'min_samples_split': [20],\n",
" 'min_samples_leaf': [3],\n",
"}\n",
"clf_rf, df_rf, features_rf = train_cv(RandomForestClassifier, df_train, features, params)\n",
"test_result(clf_rf, df_test, features)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mean_test_AUC</th>\n",
" <th>mean_test_Accuracy</th>\n",
" <th>mean_test_F1</th>\n",
" <th>mean_train_AUC</th>\n",
" <th>mean_train_Accuracy</th>\n",
" <th>mean_train_F1</th>\n",
" <th>param_criterion</th>\n",
" <th>param_max_depth</th>\n",
" <th>param_max_leaf_nodes</th>\n",
" <th>param_min_samples_leaf</th>\n",
" <th>param_min_samples_split</th>\n",
" <th>param_n_estimators</th>\n",
" <th>rank_test_AUC</th>\n",
" <th>rank_test_Accuracy</th>\n",
" <th>rank_test_F1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.56067</td>\n",
" <td>0.894271</td>\n",
" <td>0.216932</td>\n",
" <td>0.563842</td>\n",
" <td>0.89526</td>\n",
" <td>0.22659</td>\n",
" <td>gini</td>\n",
" <td>5</td>\n",
" <td>20</td>\n",
" <td>3</td>\n",
" <td>20</td>\n",
" <td>500</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mean_test_AUC mean_test_Accuracy mean_test_F1 mean_train_AUC \\\n",
"0 0.56067 0.894271 0.216932 0.563842 \n",
"\n",
" mean_train_Accuracy mean_train_F1 param_criterion param_max_depth \\\n",
"0 0.89526 0.22659 gini 5 \n",
"\n",
" param_max_leaf_nodes param_min_samples_leaf param_min_samples_split \\\n",
"0 20 3 20 \n",
"\n",
" param_n_estimators rank_test_AUC rank_test_Accuracy rank_test_F1 \n",
"0 500 1 1 1 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"to_result_df(df_rf).head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best params: {'n_neighbors': 100}\n",
"best mean val score: 0.888102435547691\n",
"accuracy: 0.8852277753206546\n",
" precision recall f1-score support\n",
"\n",
" 0 0.89 0.99 0.94 3970\n",
" 1 0.62 0.16 0.25 552\n",
"\n",
" accuracy 0.89 4522\n",
" macro avg 0.76 0.57 0.59 4522\n",
"weighted avg 0.86 0.89 0.85 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4.33 s, sys: 720 ms, total: 5.05 s\n",
"Wall time: 2min 24s\n"
]
}
],
"source": [
"%%time\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"params = {\n",
" 'n_neighbors': [100],\n",
"}\n",
"clf_knn, df_knn = train_cv(KNeighborsClassifier, df_train, features, params, show_importance=False)\n",
"test_result(clf_knn, df_test, features)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mean_test_AUC</th>\n",
" <th>mean_test_Accuracy</th>\n",
" <th>mean_test_F1</th>\n",
" <th>mean_train_AUC</th>\n",
" <th>mean_train_Accuracy</th>\n",
" <th>mean_train_F1</th>\n",
" <th>param_n_neighbors</th>\n",
" <th>rank_test_AUC</th>\n",
" <th>rank_test_Accuracy</th>\n",
" <th>rank_test_F1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.564877</td>\n",
" <td>0.888102</td>\n",
" <td>0.229934</td>\n",
" <td>0.566733</td>\n",
" <td>0.888791</td>\n",
" <td>0.235224</td>\n",
" <td>100</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mean_test_AUC mean_test_Accuracy mean_test_F1 mean_train_AUC \\\n",
"0 0.564877 0.888102 0.229934 0.566733 \n",
"\n",
" mean_train_Accuracy mean_train_F1 param_n_neighbors rank_test_AUC \\\n",
"0 0.888791 0.235224 100 1 \n",
"\n",
" rank_test_Accuracy rank_test_F1 \n",
"0 1 1 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"to_result_df(df_knn).head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best params: {'C': 10, 'solver': 'newton-cg'}\n",
"best mean val score: 0.9015704490157045\n",
"accuracy: 0.903140203449801\n",
" precision recall f1-score support\n",
"\n",
" 0 0.92 0.98 0.95 3970\n",
" 1 0.69 0.37 0.48 552\n",
"\n",
" accuracy 0.90 4522\n",
" macro avg 0.80 0.68 0.72 4522\n",
"weighted avg 0.89 0.90 0.89 4522\n",
"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAVMAAAEYCAYAAADh1BXbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XucVXW9//HXe2YAQSBQUAlRCRDvIHI7Kt6FQUy00rDylidOpaV5OWJ3NUKz8hddPAePGGZqphJkqIDmtVAuIWJoDKBCkIhc0kAU+Pz+2Avb4MxmD7Nm1szm/fSxHrP3d33XWt/FyJvv+q6bIgIzM6ubsqwbYGZWChymZmYpcJiamaXAYWpmlgKHqZlZChymZmYpcJiamaXAYWpmlgKHqZlZCiqybsDOUEXLUPM2WTfDdsKRB++XdROsDubMmb0qIjqmuc7ytvtHbNpQVN3Y8OajEVGZ5vbT0jTDtHkbWvQ8J+tm2E549rmfZd0Eq4OWzfRa2uuMTe/S4qARRdV99y8/7ZD29tPSJMPUzEqIACnrVtSZw9TMsqemf/rGYWpm2XPP1MysruSeqZlZnQkoK8+6FXXmMDWzjMmH+WZmqfBhvplZCtwzNTOrK5+AMjOrO1+0b2aWEvdMzczqSlDuS6PMzOpGuGdqZpYKj5mamdWVz+abmaXDPVMzsxSUQM+06e+BmTVtUvFTwdVoN0nPS3pB0kuSrkvKfylpiaS5ydQ7KZeksZKqJM2T1CdvXRdIWphMFxSzG+6Zmln20nlq1EbgpIh4R1Iz4BlJDyfzro6I+7erPxTokUwDgFuBAZL2AL4D9AUCmC1pckSsKbgLaeyBmdnOS05AFTMVEDnvJF+bJVMUWGQ4cGey3AygnaROwBBgWkSsTgJ0GrDDl/g5TM0se8Uf5neQNCtvGrntalQuaS6wklwgPpfMGp0cyt8iqUVS1hlYmrf4sqSspvKCfJhvZtmq3UX7qyKib00zI2Iz0FtSO2CipMOAa4F/AM2BccA1wPXJlj+0igLlBblnamYZS+cwP19ErAWeACojYkVyKL8RuAPon1RbBnTJW2xfYHmB8oIcpmaWvXTO5ndMeqRIagmcArycjIMiScCZwPxkkcnA+clZ/YHAuohYATwKDJbUXlJ7YHBSVpAP880se+mcze8ETJBUTq6jeF9EPCTpcUkdyR2+zwW+mNSfApwGVAHrgYsAImK1pBuAmUm96yNi9Y427jA1s2wpndtJI2IecGQ15SfVUD+AS2qYNx4YX5vtO0zNLHu+ndTMrO7kMDUzq5vcW0scpmZmdSOqv7KziXGYmlnG5J6pmVkaysqa/iXvDlMzy5x7pmZmdeUxUzOzupPHTM3M0uEwNTNLgcPUzCwFDlMzs7oSqMxhamZWJz4BZWaWEoepmVkamn6WOkzNLGNyz9TMLBUOUzOzOhLyg07MzFLR9DumftWzmWUsGTMtZiq4Gmk3Sc9LekHSS5KuS8q7SnpO0kJJv5HUPClvkXyvSuYfkLeua5PyVyQNKWY3HKZmlrk0whTYCJwUEb2A3kClpIHATcAtEdEDWANcnNS/GFgTEd2BW5J6SDoEGAEcClQCv0heH12Qw9TMMpdGmEbOO8nXZskUwEnA/Un5BODM5PPw5DvJ/JOV28hw4N6I2BgRS4AqoP+O9sFjpg2gRfMKpt9+Oc2bV1BRXs7E6X/he/8zhRP6H8j3Lz+LsjLxr/Ub+cJ3fsXipav4wZWf4Lh+BwLQarfmdNyjNZ2O+28ARl82nMpBh1Em8fhzL3PlD+4vtGmrZz8b+xPuGH8bEcFFn/8CX7nscq695mqm/OH3NG/WnK7dujHu/+6gXbt2WTe1cUtpzDTpQc4GugM/BxYBayNiU1JlGdA5+dwZWAoQEZskrQP2TMpn5K02f5kaOUwbwMb3NlE5ciz/2vAeFRVlPD7+CqY++1fGfn0EZ3/tf3llyRuMPHsQo/6zkpHfuYv//tGDHyz7pRHH06vnvgAM7NWV/+j9Mfqd830AHr/jCgYd1YOnZy/MZL92dS/Nn88d42/j6T89T/PmzTljWCVDTxvGyaecyg2jx1BRUcE3rr2Gm28aw+gxN2Xd3EatFpdGdZA0K+/7uIgYt/VLRGwGektqB0wEDq5mHbF1szXMq6m8IB/mN5B/bXgPgGYV5VRUlBMRRARtd98NgLZtWrLizXUfWu6cyqO475HZAERAi+bNaN6sghbNK6ioKGfl6n823E7YNl5+eQH9+w+kVatWVFRUMOi445k0aSKnnDqYiopcP6X/gIH8fdmyjFvauEm5S6OKmYBVEdE3bxpX3TojYi3wBDAQaCdpa8dxX2B58nkZ0CVpQwXwEWB1fnk1y9SoQcNU0gGSFki6LTnbNlVSS0m9Jc2QNE/SREntG7JdDaGsTMy4dxSvP3Yjj894mZnzX+PL19/NxJ9+mapHbuAzw/rxwzumbbPMfp3as/9H9+SJma8A8Ny8JTw1ayFLpo1mydTvM/1PC3hlyRtZ7I4Bhx56GM888xRvvfUW69ev55GHp7Bs6dJt6tz5y/EMqRyaUQubjpTO5ndMeqRIagmcAiwA/gh8Kql2ATAp+Tw5+U4y//GIiKR8RHK2vyvQA3h+R/uQRc+0B/DziDgUWAt8ErgTuCYijgBeBL6TQbvq1ZYtwcARN9J9yDfpe9j+HNKtE1/57Imc9ZVf0L3yW/xq0gxuuvIT2yxz9pCj+N1jc9myJXeE8bEuHejZdW+6D/km3YZ8gxP6H8gxfbplsTsGHHTwwVx51TWcXnkqZwyr5Igjen3QIwW4acxoyisqGPGZz2bYyiZCRU6FdQL+KGkeMBOYFhEPAdcAV0iqIjcmentS/3Zgz6T8CmAUQES8BNwH/BV4BLgkGT4oKIsx0yURMTf5PBvoBrSLiCeTsgnAb7dfSNJIYCQAzVo3QDPrx7p3NvDUrIUMOeYQDj+wMzPnvwbA/VPnMOnnX96m7qeGHMXXbrzvg+/DT+zF8y+++sGQwaPPvsSAw7vy7JxFDbcDto0LP38xF34+d6XNt7/5dTp3zo1v33XnBKb84SEenvpYSdwqWd/S+DOKiHnAkdWUL6aas/ER8S5wdg3rGg2Mrs32s+iZbsz7vBko6jRnRIzbOk6iipb107J60qF9az7SOtfm3Vo046QBPXl5yRu0bd2S7vvtBcBJAw/a5pC9x/570b5tK2a8sOSDsqX/WMOgo7pTXl5GRUUZg/r04OUl/2jYnbFtrFy5EoDXX3+dSb97kHNGnMvURx/hRz+8ifsnTqZVq1YZt7AJSOmi/aw1hrP564A1kgZFxNPAecCTO1imSdmnQ1tuu/48ysvKKCsTD0ybw8NPz+eSG+7mnh/+J1tiC2v/uYH/+u5dHyxzTmVffvvo7G3W8+D0v3B8vwOZdd/XCYJpf1rAlKfmN/TuWJ5zz/kkq1e/RbOKZvy/sT+nffv2fO2yS9m4cSOnV54K5E5C/fQX/5NxSxsvAY08J4ui3HhrA20sd7vWQxFxWPL9KqA18Dvgf4BWwGLgoohYU9N6ylrtFS16nlPv7bX0rZn5s6ybYHXQsplmR0TfNNe52z4HRpfzxhZVt+qHQ1PffloatGcaEa8Ch+V9/2He7IEN2RYzazzK/A4oM7M6Umkc5jtMzSxTwj1TM7NUuGdqZpaCxn7ZUzEcpmaWLY+ZmpnVnd8BZWaWEvdMzcxS4DFTM7O68pipmVnd5e7Nb/pp6jA1s8yVQJY6TM0se+6ZmpnVlXw7qZlZnZXK80wdpmaWscb/FP1iOEzNLHMlkKUOUzPLXin0TJv+DbFm1rQlF+0XMxVcjdRF0h8lLZD0kqTLkvLvSvq7pLnJdFreMtdKqpL0iqQheeWVSVmVpFHF7IZ7pmaWqRQv2t8EXBkRcyS1AWZLmpbMu2W71yQh6RBgBHAo8FFguqQDk9k/B04FlgEzJU2OiL8W2rjD1Mwyl8alURGxAliRfH5b0gKgc4FFhgP3RsRGYImkKqB/Mq8qIhYDSLo3qVswTH2Yb2aZk1TUBHSQNCtvGlnD+g4AjgSeS4oulTRP0nhJ7ZOyzsDSvMWWJWU1lRfkMDWzbNVuzHRVRPTNm8Z9aHVSa+AB4PKI+CdwK9AN6E2u5/qjf2/5Q6JAeUE+zDezTCnF60wlNSMXpL+OiAcBIuKNvPm3AQ8lX5cBXfIW3xdYnnyuqbxG7pmaWeZSOpsv4HZgQUT8OK+8U161s4D5yefJwAhJLSR1BXoAzwMzgR6SukpqTu4k1eQd7YN7pmaWubJ0eqbHAOcBL0qam5R9HThXUm9yh+qvAv8FEBEvSbqP3ImlTcAlEbEZQNKlwKNAOTA+Il7a0cYdpmaWKaX0oJOIeIbqxzunFFhmNDC6mvIphZarjsPUzDJXAg+NcpiaWfZK4XZSh6mZZa4EstRhambZErnLo5o6h6mZZc5jpmZmdSU/HNrMrM4ElJdA19RhamaZK4GOqcPUzLLnw3wzszoq5r77psBhamaZS+ne/Ew5TM0sc00/Sh2mZtYIeMzUzKyOJO1al0ZJapG8eMrMLFUl0DHd8ZP2JfWX9CKwMPneS9JP671lZrbLqMUL9RqtYl5bMhY4HXgLICJeAE6sz0aZ2a5D5O7NL2ZqzIo5zC+LiNe2+1dhcz21x8x2QY2911mMYsJ0qaT+QEgqB74C/K1+m2Vmu5KmH6XFhemXyB3q7we8AUxPyszM6kwqjQed7HDMNCJWRsSIiOiQTCMiYlVDNM7Mdg1pnICS1EXSHyUtkPSSpMuS8j0kTZO0MPnZPimXpLGSqiTNk9Qnb10XJPUXSrqgmH3YYc9U0m3kXpG6jYgYWcwGzMx2JKUh003AlRExR1IbYLakacCFwGMRcaOkUcAo4BpgKNAjmQYAtwIDJO0BfAfoSy77ZkuaHBFrCm28mMP86XmfdwPOApbWYgfNzGoklMq9+RGxAliRfH5b0gKgMzAcOCGpNgF4glyYDgfujIgAZkhqJ6lTUndaRKwGSAK5Erin0PZ3GKYR8Zv875J+BUwrbvfMzHagdk+N6iBpVt73cREx7kOrlA4AjgSeA/ZOgpaIWCFpr6RaZ7btGC5LymoqL2hnbiftCuy/E8ul5oiDujD1yVuybILtpPc2bcm6CdYI1eLSqFUR0XcH62oNPABcHhH/LLDu6mZEgfKCihkzXZO3ojJgNbkxBzOzVBRz91AxJDUjF6S/jogHk+I3JHVKeqWdgJVJ+TKgS97i+wLLk/ITtit/YkfbLrgPykV6L6BjMrWPiI9FxH07WrGZWTG2vgOqmKngenJ5dTuwICJ+nDdrMrD1jPwFwKS88vOTs/oDgXXJcMCjwGBJ7ZMz/4OTsoIK9kwjIiRNjIijdrQiM7OdldJlpscA5wEvSpqblH0duBG4T9LFwOvA2cm8KcBpQBWwHrgIICJWS7oBmJnUu37ryahCihkzfV5Sn4iYU+QOmZkVLffaklTO5j9DzTdTnVxN/QAuqWFd44Hxtdl+jWEqqSIiNgHHAl+QtAj4V9LYiIg+NS1rZlYbJXADVMGe6fNAH+DMBmqLme2iSuA5JwXDVAARsaiB2mJmu6DcI/iafpoWCtOOkq6oaeZ2Z8vMzHZaWpdGZalQmJYDrSmNp2OZWSO1K7wDakVEXN9gLTGzXVYJHOXveMzUzKy+lUDHtGCYfui6LDOztJX8Cahirvg3M0tDCWTpTj01yswsPU3gzaPFcJiaWaYElJdA19RhamaZc8/UzCwFaTzoJGsOUzPLVO5sftatqDuHqZllq3bvgGq0HKZmlrmSvs7UzKwh+DDfzCwV8qVRZmZ1JTxmamZWd74DyswsHaVwAqoUHnBtZk3Y1sP8YqYdrksaL2mlpPl5Zd+V9HdJc5PptLx510qqkvSKpCF55ZVJWZWkUcXsh8PUzDJXJhU1FeGXQGU15bdERO9kmgIg6RBgBHBosswvJJVLKgd+DgwFDgHOTeoW5MN8M8tcWkf5EfGUpAOKrD4cuDciNgJLJFUB/ZN5VRGxONc23ZvU/WuhlblnamaZknJPjSpmAjpImpU3jSxyM5dKmpcMA7RPyjoDS/PqLEvKaiovyGFqZplTkROwKiL65k3jilj9rUA3oDewAvhR3ma3FwXKC/Jhvpllqr5fWxIRb3ywLek24KHk6zKgS17VfYHlyeeaymvknqmZZa4WPdPar1vqlPf1LGDrmf7JwAhJLSR1BXoAzwMzgR6SukpqTu4k1eQdbcc9UzPLXFodU0n3ACeQG1tdBnwHOEFSb3KH6q8C/wUQES9Juo/ciaVNwCURsTlZz6XAo0A5MD4iXtrRth2mZpYxpfZw6Ig4t5ri2wvUHw2MrqZ8CjClNtt2mJpZpvwOKDOzlDT9KHWYmlnW5HdAmZnVmSiNy4ocpmaWOfdMzcxS0PSj1GFqZo1ACXRMHaZmli1fGmVmlgqhEjjQd5iaWeZKoGPqMDWzbOUujWr6aeowNbNsFfl+p8bOYWpmmXOYmpmlwCegzMzqyJdGmZmlpASy1GFqZtkrhcP8UnhYS5Py7rvvMuSEoznx6KM4rn8vfjD6um3mX3vV5XTt1H6bskkP/pZB/Y7guP69+OLnz2vI5tp2li1dyulDTqZf70MZ0Odwbv3ZWABWr17N8GGDOfKwngwfNpg1a9Z8sMzTTz3BsQP6MKDP4Zx26olZNb3Ryr1Qr7ipMXPPtIG1aNGCBx+ayu6tW/P+++/z8cEncNKplfTtP4C5c2bzz3Vrt6m/uGohY3/8A34/9UnatW/Pm2+uzKjlBlBRUcH3bryZ3kf24e233+b4o/tx4smn8OtfTeD4E07miquv4cc338QtP7yJ60ffyNq1a7nyskt5YNIUuuy3H2+u9O/vw0rjDij3TBuYJHZv3RqA999/n02b3kcSmzdv5rpvjeLbN4zZpv5dE27noi98iXbtc73Vjh33avA227/t06kTvY/sA0CbNm3oedBBLF/+d6Y8NJnPfO58AD7zufP5w+8nAfDb39zDx4efRZf99gOg417+/X1Icp1pMVNjVi9hKukGSZflfR8t6auSrpY0U9I8Sdcl83aX9AdJL0iaL+nT9dGmxmTz5s2cdExfDu3WmeNPPJmj+vXn9v/9BUOGns7e+3Tapu6iqoUsrvobp596PENPOpbHpz2aUatte6+99irz5s6lb78BvLnyDfbplPvd7dOp0wdHEIsW/o21a9cwbPBJHHd0P+759Z1ZNrnRSutVz5LGS1opaX5e2R6SpklamPxsn5RL0lhJVUkm9clb5oKk/kJJFxSzD/V1mH878CDwE0ll5N47/XXgZKA/uT+XyZKOAzoCyyNiGICkj1S3QkkjgZEA+3bZr56a3TDKy8t5/NlZrFu7lgs/ezZ/fvZpfv+7B5g4ZfqH6m7atJnFi6qYOGU6y/++jOGVJ/HkjL/wkXbtMmi5bfXOO+9w3rlnM+bmH9O2bdsa623atIm5c+Yw+eFpvLthA6eccAz9+g+ke48DG7C1jVvKl0b9EvgZkP+v1ijgsYi4UdKo5Ps1wFCgRzINAG4FBkjag9wrovuSez30bEmTI2INBdRLzzQiXgXeknQkMBj4C9Av7/Mc4KBkJ14ETpF0k6RBEbGuhnWOi4i+EdF3zw4d6qPZDe4j7dpxzLHH8exTT7Bk8SIG9j6Yvof1YMP69QzodTAAH+3cmcphZ9CsWTP2P6Ar3XocyOJFVRm3fNf2/vvvc965n+KcT3+GM878BAAd99qbf6xYAcA/Vqz4YDjmo5335ZTBQ9h9993Zs0MHjj52EC/OeyGztjdaKXVNI+IpYPV2xcOBCcnnCcCZeeV3Rs4MoJ2kTsAQYFpErE4CdBpQuaNt1+eY6f8BFwIXAePJ/VGMiYjeydQ9Im6PiL8BR5EL1TGSvl2PbcrcqlVvsm5t7iTThg0beOqJxzmidx/mVy1l1vyFzJq/kJatWvHcCwsAGDrsDJ596gkA3nprFYurFrL/AV2zav4uLyK49Iv/Sc+eB3PpZV/7oHzosI9z9125ztDdd93JaaefAcCwj5/Bn559hk2bNrF+/Xpmz3yengcdnEnbGzMV+R/QQdKsvGlkEavfOyJWACQ/tw5cdwaW5tVblpTVVF5QfZ7NnwhcDzQDPgNsAm6Q9OuIeEdSZ+D9pA2rI+IuSe+QC+CS9cY/VvDVL17M5s2b2bJlC8PP+hSDhw6rsf6JpwzmicenM6jfEZSVl/PtG8awx557NmCLLd+MPz3LvXffxaGHHc6xA3JDbN++7ntccdU1XPC5Efxqwnj27bIfE379GwB6HnQwp5w6hKP79aasrIzzL7yYQw49LMtdaJRqcZS/KiL6prXZasqiQHlB9RamEfGepD8CayNiMzBV0sHAn5OXZ70DfA7oDtwsaQu5cP1SfbWpMTj0sCN47JmZBessWfHvoRlJXD/mZhhzc303zYrwH8ccy7oNm6ud9/uHp1VbftkVV3HZFVfVZ7OavHo+Uf+GpE4RsSI5jN96fdoyoEtevX2B5Un5CduVP7GjjdTbYX5y4mkguZNRAETETyLi8GT6j4hYFBGPRsQRyaF/v4iYVV9tMrNGKq3T+dWbDGw9I38BMCmv/PzkrP5AYF0yDPAoMFhS++TM/+CkrKB66ZlKOgR4CJgYEQvrYxtmVhokKEvpbL6ke8j1KjtIWkburPyNwH2SLgZeB85Oqk8BTgOqgPXkzu8QEasl3QBsPYS8PiK2P6n1IfUSphHxV+Bj9bFuMys9aR3mR8S5Ncw6uZq6AVxSw3rGkztxXjTfTmpm2WvkdzcVw2FqZhkrjXvzHaZmlrnGft99MRymZpapup2obzwcpmaWvRJIU4epmWUurUujsuQwNbPMNf0odZiaWdZKZNDUYWpmmfOlUWZmdSR8aZSZWSpKIEsdpmbWCJRAmjpMzSxzvjTKzCwFTT9KHaZm1hiUQJo6TM0sU7nLTJt+mjpMzSxb8qVRZmapKIEsdZiaWdaESqBr6jA1s8yVQJbW36uezcyKUexbnovNW0mvSnpR0lxJs5KyPSRNk7Qw+dk+KZeksZKqJM2T1Gdn98NhambZSzNNc06MiN4R0Tf5Pgp4LCJ6AI8l3wGGAj2SaSRw687ugsPUzDKnIv+rg+HAhOTzBODMvPI7I2cG0E5Sp53ZgMPUzDInFTcVKYCpkmZLGpmU7R0RKwCSn3sl5Z2BpXnLLkvKas0noMwsc7Xoc3bYOg6aGBcR47arc0xELJe0FzBN0su13HQU35x/c5iaWbZEbS6NWpU3DlqtiFie/FwpaSLQH3hDUqeIWJEcxq9Mqi8DuuQtvi+wvFbtT/gw38wytfXh0Gkc5kvaXVKbrZ+BwcB8YDJwQVLtAmBS8nkycH5yVn8gsG7rcEBtuWdqZplL8TLTvYGJSU+3Arg7Ih6RNBO4T9LFwOvA2Un9KcBpQBWwHrhoZzfsMDWzzKV10X5ELAZ6VVP+FnByNeUBXJLGth2mZpY5PzXKzCwNTT9LHaZmlr0SyFKHqZllS/I7oMzM0tH0s9RhambZK4EsdZiaWfZK4CjfYWpmWavzE6EaBYepmWVq6+2kTZ3D1Mwy5zA1M0uBD/PNzOqqdg9+brQcpmaWqdq/3qlxcpiaWfZKIE0dpmaWOY+ZmpmlwGOmZmYpcJiamaXAh/lmZnVUKndAKfcKlKZF0pvAa1m3ox51AFZl3QjbKaX+u9s/IjqmuUJJj5D7cyvGqoioTHP7aWmSYVrqJM3a0bvBrXHy727XVZZ1A8zMSoHD1MwsBQ7Txmlc1g2wnebf3S7KY6ZmZilwz9TMLAUOUzOzFDhMzcxS4DA1M0uBw7SRk+TfURMiqZOkVlm3wxqe/6I2MpI+K+mbki6TtF9EbHGgNg2SzgBuBTpn3RZreP5L2ohIugT4CvA2sD/wgKTuEbEl25bZjkgaBFwHfDsiFkraTVLbZF4JPMbDdsRPjWoEJClyF/weDnw1Ip5Pyq8BviXpixGxIdNGWrXyfncHA08CmyV9GagE3pV0dUSU8kN5LOGeaePQQ1IzYF/ghLzyh4H3HKSNWpvk50ygJfBbIIDbgSVAu4zaZQ3MPdOMSboUuByYCLwAfFXSqogYT66n2k3SRyJiXZbttA+TNAw4V9JiYDYwCiiLiLckHQncCNydZRut4ThMM5ScsDgCGAIMBtoC04HvJX8ZTwQ+7SBtfCT1A34AnEmuF3oA8Ehulo4F7gC+FhEvZNZIa1C+Nz8jkjoDfwamR8TnJbUAPgl0AdqTe2DGuoh4K8NmWjUk7UcuRFeSe0j5T4CzI+K15PfaAWgWEbMybKY1MI+ZZiQi/k7u8L5S0oiI2AjcC7wJbAFWO0gbH0l7A5eSe5r+SHL/6J2VBOmngC8DCxykux4f5mcoIh6UtBEYI4mIuFfSL4HdI+LtjJtn1VsFHAh8DHgFmAq0lfRR4FvANyPivQzbZxnxYX4jIGkouR7O1yLi/qzbYx+WhGXriPhbcph/FfA3YE9yY9vvALdFxKS8y6VsF+IwbSQknQosiojFWbfFtiVpd+B7QC9yQzF/Jnc4/6uI+JOkNuTGSFc7SHddDlOzIkjaDTgEuAaYR268+1XgExGxNMOmWSPhMVOzIkTEu8AcSSOBFuRO3vYmd6PFUvdIzT1Ts50k6Rvk3iM/Muu2WPZ8aZRZLeU9uGQRsL+kllm2xxoHh6lZLUVEJIH6L+BKPzvBwIf5ZmapcM/UzCwFDlMzsxQ4TM3MUuAwtWpJ2ixprqT5kn5bl5fESTpB0kPJ5zMkjSpQt13ypPrabuO7kq7a2Taa1ZXD1GqyISJ6R8RhwHvAF/NnKqfW//9ExOSIuLFAlXbkbtU0a1IcplaMp4Hukg6QtEDSL4A5QBdJgyX9WdKcpAfbGkBSpaSXJT0DfGLriiRdKOlnyee9JU2U9EIyHU3u6fTdkl7xzUm9qyXNlDRP0nV56/qGpFckTQd6Ntifhlk1HKZWkKQKYCjwYlLUE7gzIo4kd53lN4FTIqIPMAu4IrmP/Tbg48AgYJ8aVj8WeDIiegF9gJfIvfpjUdIrvlrSYKAH0J/c7ZtHSTpO0lHACOBIcmHdL+VdN6sV35tvNWkpaW7y+Wlyr+b4KPBaRMxIyge6hvZUAAABLElEQVSSe/jHs8lNQc3JPVHpIGBJRCwEkHQXuQcpb+8k4HyAiNgMrJPUfrs6g5PpL8n31uTCtQ0wMSLWJ9uYXKe9Nasjh6nVZENE9M4vSALzX/lFwLSIOHe7er3JvaEzDQLGRMT/breNy1Pchlmd+TDf6mIGcIyk7gCSWkk6EHgZ6CqpW1Lv3BqWfwz4UrJsuaS2wNv8+/XJAI8Cn88bi+0saS/gKeAsSS2T54l+POV9M6sVh6nttIh4E7gQuEfSPHLhelDyuLqRwB+SE1Cv1bCKy4ATJb1I7lXJhybvvXo2uSTr5oiYSu51yX9O6t0PtImIOcBvgLnAA+SGIswy43vzzcxS4J6pmVkKHKZmZilwmJqZpcBhamaWAoepmVkKHKZmZilwmJqZpeD/A/g6ajWCA0uBAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 10s, sys: 11.6 s, total: 1min 22s\n",
"Wall time: 1min 57s\n"
]
}
],
"source": [
"%%time\n",
"from sklearn.linear_model import LogisticRegression\n",
"\n",
"params = {\n",
" 'C': [10],\n",
" 'solver': ['newton-cg'],\n",
"}\n",
"clf_lr, df_lr = train_cv(LogisticRegression, df_train, features, params, show_importance=False)\n",
"test_result(clf_lr, df_test, features)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mean_test_AUC</th>\n",
" <th>mean_test_Accuracy</th>\n",
" <th>mean_test_F1</th>\n",
" <th>mean_train_AUC</th>\n",
" <th>mean_train_Accuracy</th>\n",
" <th>mean_train_F1</th>\n",
" <th>param_C</th>\n",
" <th>param_solver</th>\n",
" <th>rank_test_AUC</th>\n",
" <th>rank_test_Accuracy</th>\n",
" <th>rank_test_F1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.658461</td>\n",
" <td>0.90157</td>\n",
" <td>0.446948</td>\n",
" <td>0.659484</td>\n",
" <td>0.901921</td>\n",
" <td>0.449148</td>\n",
" <td>10</td>\n",
" <td>newton-cg</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mean_test_AUC mean_test_Accuracy mean_test_F1 mean_train_AUC \\\n",
"0 0.658461 0.90157 0.446948 0.659484 \n",
"\n",
" mean_train_Accuracy mean_train_F1 param_C param_solver rank_test_AUC \\\n",
"0 0.901921 0.449148 10 newton-cg 1 \n",
"\n",
" rank_test_Accuracy rank_test_F1 \n",
"0 1 1 "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"to_result_df(df_lr).head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best params: {'learning_rate': 0.1, 'max_depth': 6, 'n_estimators': 500, 'num_leaves': 10, 'random_state': 123}\n",
"best mean val score: 0.910049399100494\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x1440 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"accuracy: 0.9095532950022114\n",
" precision recall f1-score support\n",
"\n",
" 0 0.93 0.97 0.95 3970\n",
" 1 0.68 0.50 0.57 552\n",
"\n",
" accuracy 0.91 4522\n",
" macro avg 0.80 0.73 0.76 4522\n",
"weighted avg 0.90 0.91 0.90 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 9.18 s, sys: 820 ms, total: 10 s\n",
"Wall time: 58 s\n"
]
}
],
"source": [
"%%time\n",
"from lightgbm import LGBMClassifier\n",
"\n",
"params = {\n",
" 'random_state': [123],\n",
" 'num_leaves': [10],\n",
" 'learning_rate': [0.1],\n",
" 'n_estimators': [500],\n",
" 'max_depth': [6]\n",
"}\n",
"clf_lgbm, df_lgbm, features_lgbm = train_cv(LGBMClassifier, df_train, features, params)\n",
"test_result(clf_lgbm, df_test, features)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mean_test_AUC</th>\n",
" <th>mean_test_Accuracy</th>\n",
" <th>mean_test_F1</th>\n",
" <th>mean_train_AUC</th>\n",
" <th>mean_train_Accuracy</th>\n",
" <th>mean_train_F1</th>\n",
" <th>param_learning_rate</th>\n",
" <th>param_max_depth</th>\n",
" <th>param_n_estimators</th>\n",
" <th>param_num_leaves</th>\n",
" <th>rank_test_AUC</th>\n",
" <th>rank_test_Accuracy</th>\n",
" <th>rank_test_F1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.727778</td>\n",
" <td>0.910049</td>\n",
" <td>0.559232</td>\n",
" <td>0.801879</td>\n",
" <td>0.938767</td>\n",
" <td>0.703299</td>\n",
" <td>0.1</td>\n",
" <td>6</td>\n",
" <td>500</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mean_test_AUC mean_test_Accuracy mean_test_F1 mean_train_AUC \\\n",
"0 0.727778 0.910049 0.559232 0.801879 \n",
"\n",
" mean_train_Accuracy mean_train_F1 param_learning_rate param_max_depth \\\n",
"0 0.938767 0.703299 0.1 6 \n",
"\n",
" param_n_estimators param_num_leaves rank_test_AUC rank_test_Accuracy \\\n",
"0 500 10 1 1 \n",
"\n",
" rank_test_F1 \n",
"0 1 "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"to_result_df(df_lgbm).head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best params: {'learning_rate': 0.1, 'max_depth': 4, 'n_estimators': 500, 'random_state': 123}\n",
"best mean val score: 0.9097790557644573\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x1440 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"accuracy: 0.9084475895621407\n",
" precision recall f1-score support\n",
"\n",
" 0 0.93 0.97 0.95 3970\n",
" 1 0.67 0.50 0.57 552\n",
"\n",
" accuracy 0.91 4522\n",
" macro avg 0.80 0.73 0.76 4522\n",
"weighted avg 0.90 0.91 0.90 4522\n",
"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAVMAAAEYCAYAAADh1BXbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XmcFdWd9/HPt5tFZFEMYBBQCSKoRAERGKM+uATRjFGTaHAySowJxqDRxPhIEh3jFs0+IYsOeWRcEheiIfIYXDBxT1QWEXfBLRAZlahEQZHW3/xRB3LF7tu36equ7sv37atefe+pU1WnaPlyqk4tigjMzKx5aopugJlZNXCYmpnlwGFqZpYDh6mZWQ4cpmZmOXCYmpnlwGFqZpYDh6mZWQ4cpmZmOehQdAM2hTp0CXXqXnQzbBOM2GX7optgzbBw4YKVEdE7z3XW9tghou6tiurGW6/cGhET8tx+XtpnmHbqTuchRxfdDNsE9z3w86KbYM3QpaNeyHudUfc2nYdOrKju2w/9rFfe289LuwxTM6siAqSiW9FsDlMzK57a//CNw9TMiueeqZlZc8k9UzOzZhNQU1t0K5rNYWpmBZMP883McuHDfDOzHLhnambWXB6AMjNrPl+0b2aWE/dMzcyaS1DrS6PMzJpHuGdqZpYLnzM1M2uu6hjNb/97YGbtn1TZVHYV2kLSg5IelvSYpHNT+eWSnpO0KE3DU7kkTZO0VNJiSSNL1jVJ0pI0TapkF9wzNbPi5dMzXQscEBFvSuoI3Cvp5jTvjIi4fqP6hwCD0zQGuAQYI2kb4BxgFBDAAkmzI+K1cht3z9TMilVpr7SRnmlk3kxfO6YpyixyOHBlWu5+YGtJfYGDgbkR8WoK0LlAo69KcZiaWfFqaiuboJek+SXT5NLVSKqVtAh4mSwQH0izLkyH8j+R1DmV9QOWlSy+PJU1VF6WD/PNrGBNGoBaGRGjGpoZEe8CwyVtDcySNAz4JvA/QCdgOnAmcF624Q+uokx5We6ZmlnxcjjMLxURrwN3AhMiYkU6lF8L/DcwOlVbDgwoWaw/8GKZ8rIcpmZWrPUX7VcylVuN1Dv1SJHUBTgIeDKdB0WSgCOAR9Mis4Hj0qj+WGBVRKwAbgXGS+opqScwPpWV5cN8MytYbteZ9gWukFRL1lGcGRE3SfqTpN7ZhlgEfDnVnwMcCiwF1gDHA0TEq5LOB+aleudFxKuNbdxhambFy+EOqIhYDIyop/yABuoHMKWBeTOAGU3ZvsPUzIrnd0CZmTWTquN2UoepmRXPDzoxM2s+OUzNzJone2uJw9TMrHlE/fcctTMOUzMrmNwzNTPLQ02NR/PNzJrNPVMzs+byOVMzs+aTz5mameXDYWpmlgOHqZlZDhymZmbNJVCNw9TMrFk8AGVmlhOHqZlZHtp/ljpMzaxgcs/UzCwXDlMzs2YSqooHnbT/PTCz9k8VTuVWIW0h6UFJD0t6TNK5qXygpAckLZF0naROqbxz+r40zd+xZF3fTOVPSTq4kl1wmJpZsdI500qmRqwFDoiIPYDhwARJY4HvAT+JiMHAa8AJqf4JwGsRsRPwk1QPSbsCE4HdgAnALyU1+vpUh6mZFS6PMI3Mm+lrxzQFcABwfSq/AjgifT48fSfNP1DZRg4Hro2ItRHxHLAUGN3YPjhMzaxwTQjTXpLml0yTN1pPraRFwMvAXOAZ4PWIqEtVlgP90ud+wDKANH8V8KHS8nqWaZAHoFpB504duP2y0+jUqQMdamuZdftDXHDpHMaN3pnvnnYkNTVi9Zq1fOmcq3h22Uq++Jl9OPHo/Xj3vfdYvWYtUy64hief/Z8N6xvw4Z4svOEsLrx0Dv951R8L3LPNz4lf/AI3z7mJ3n36sGDRowCce87Z3DT7Rmpqaujdpw/TL7uc7bbbDoC777qTM75+Guvq1vGhD/Vi7p/uKrL5bVflg/krI2JUQzMj4l1guKStgVnALvVVK7PVKFNelnumrWDtO3VMmDyNMZ+9mDETL2L83rsy+qM7Mu1bEzn+25czduLFXHfzfKZ+cQIA1908n72O/i5jJ17Mj6+4ne99/VPvW9/3v/FpbrvvsSJ2ZbN37KTPc+NNt7yv7Gunn8G8hxbzwIJFHHLov3LRBecB8Prrr3PqKV/ht7Nms/Dhx/jNtb8tosntQk7nTDeIiNeBO4GxwNaS1ncc+wMvps/LgQFp+x2ArYBXS8vrWaZBDtNWsvqtdwDo2KGWDh1qiQgigh5dtwCgR/curHhlFQBvrH57w3Jdu3QiSv5RPGzc7jy3fCWPP/M/WOvbZ9/92Gabbd5X1qNHjw2f16xZveEv/XXXXM3hR3yK7bffHoA+ffq0XkPbESm7NKqSqZH19E49UiR1AQ4CngDuAD6Tqk0CbkyfZ6fvpPl/iohI5RPTaP9AYDDwYGP70aqH+enSg5uBe4G9gb+RnewdAlwKbEl2juMLEfFaa7atpdXUiD9ffSaDBvTmv667m3mPvsBXzruaWT/7Cm+vfYd/rH6b/3PcjzbUP/Ho/fjqv+9Pp44dmHDiNAC23KITpx//cT7x5Z9x2nEHFbUrVo9zzv42v/n1lWy11VbcMvcOAJYseZq6desYf+A43nzjDaacciqfO/a4glvaNuV00X5f4Io08l4DzIyImyQ9Dlwr6QLgIeCyVP8y4CpJS8l6pBMBIuIxSTOBx4E6YEo6fVBWET3TwcAvImI34HXg08CVwJkRsTvwCHBOAe1qUe+9F4ydeDE7HXwWo4btwK6D+nLK5/bnyFN+yU4TzuaqG+/ne6f/83D+v2bezW6fPJezfnrjhsP/s0/6BD/79Z829HKt7Tj3/AtZ+twyJh7zOS795c8BqKurY+HCBcya/Qdmz7mVi757PkuefrrglrZROVxnGhGLI2JEROweEcMi4rxU/mxEjI6InSLiqIhYm8rfTt93SvOfLVnXhRExKCKGRMTNlexCEWH6XEQsSp8XAIOArSNi/Zn5K4D9Nl5I0uT1I3hR91YrNTV/q958i7vnL+Hgj+3KR3fux7xHXwDg+tsWMnaPgR+oP/PWBRw2bncA9hq2AxeedgRP/uFcTv7cOM44YTxf/uwH/qisQEdP/Dd+P+sGAPr178/4gyfQtWtXevXqxT777MfixQ8X3MK2Ke9zpkUoIkzXlnx+F9i6koUiYnpEjIqIUerQpWVa1kJ69ezGVt2yNm/RuSMHjBnCk8+9RI9uXdhp++w82gFjh/LUcy8BMGj73huWPWTf3Vi67BUADjrhPxn6iXMY+olz+Plv7uQHl93Gpdfd3cp7YxtbumTJhs9/+P+z2XnIUAAOO+xw7rv3Hurq6lizZg3z5j3A0KH1DS5v5vK7aL9QbeHSqFXAa5L2jYh7gGOBqrp+5MO9evCr846ltqaGmhpxw9yF3HzPo0w5/2qu+eEXeS/e4/V/vMWJ3/k1ACd9dj/2HzOUdXXv8vo/1vCls68seA9sveP+/RjuuetOVq5cyaAd+3P2f5zLLbfMYcnTT1GjGrbfYQem/eJSAIbusgsfP3gCe43cnZqaGj5//BfZbdiwgveg7RHQxnOyIsoGr1ppY9kA1E0RMSx9/wbQDfg9/xyAehY4vtwAVM2WfaLzkKNbvL2Wv9fm/bzoJlgzdOmoBeWu89wUW3x45xhw7LSK6i794SG5bz8vrdozjYjngWEl339YMntsa7bFzNqOGr8DysysmVQdh/kOUzMrlHDP1MwsF+6ZmpnloK1f9lQJh6mZFcvnTM3Mmq9a3gHlMDWzwrlnamaWA58zNTNrLp8zNTNrvuze/Pafpg5TMytcFWSpw9TMiueeqZlZc8m3k5qZNVu1PM/UYWpmBWv7T9GvhMPUzApXBVlayDugzMzeJ493QEkaIOkOSU9IekzSqan8O5L+JmlRmg4tWeabkpZKekrSwSXlE1LZUklTK9kH90zNrFj5XbRfB5weEQsldQcWSJqb5v1kozd7IGlXYCKwG7AdcLukndPsXwAfB5YD8yTNjojHy23cYWpmhcrrov2IWAGsSJ/fkPQE0K/MIocD10bEWuA5SUuB0Wne0oh4lqxt16a6ZcPUh/lmVriaGlU0Ab0kzS+ZJte3vvTyzhHAA6noZEmLJc2Q1DOV9QOWlSy2PJU1VF5+H5qwv2ZmLaIJ50xXRsSokml6PevqBtwAnBYR/wAuAQYBw8l6rj9aX7WepkSZ8rJ8mG9mxcrxQSeSOpIF6W8i4ncAEfFSyfxfATelr8uBASWL9wdeTJ8bKm+Qe6ZmVihRWa+0gtF8AZcBT0TEj0vK+5ZUOxJ4NH2eDUyU1FnSQGAw8CAwDxgsaaCkTmSDVLMb2w/3TM2scDn1TD8GHAs8ImlRKvsWcIyk4WSH6s8DJwJExGOSZpINLNUBUyLi3aw9Ohm4FagFZkTEY41t3GFqZoWryWc0/17qP985p8wyFwIX1lM+p9xy9XGYmlmh5AedmJnlowqy1GFqZsXzg07MzHJQBVnqMDWzYons8qj2zmFqZoXzOVMzs+aq4IL89sBhamaFElBbBV1Th6mZFa4KOqYOUzMrng/zzcyaSTk+NapIDlMzK1we9+YXzWFqZoVr/1HqMDWzNsDnTM3MmknS5nVplKTO6S1+Zma5qoKOaeOvLZE0WtIjwJL0fQ9JP2vxlpnZZiOP15YUrZJ3QE0D/hX4O0BEPAzs35KNMrPNh8juza9kassqOcyviYgXNvpX4d0Wao+ZbYbaeq+zEpWE6TJJo4GQVAucAjzdss0ys81J+4/SysL0JLJD/e2Bl4DbU5mZWbNJ1fGgk0bPmUbEyxExMSJ6pWliRKxsjcaZ2eYhjwEoSQMk3SHpCUmPSTo1lW8jaa6kJelnz1QuSdMkLZW0WNLIknVNSvWXSJpUyT402jOV9Cuy902/T0RMrmQDZmaNyemUaR1wekQslNQdWCBpLvB54I8RcbGkqcBU4EzgEGBwmsYAlwBjJG0DnAOMIsu+BZJmR8Rr5TZeyWH+7SWftwCOBJY1YQfNzBoklMu9+RGxAliRPr8h6QmgH3A4MC5VuwK4kyxMDweujIgA7pe0taS+qe7ciHgVIAXyBOCacttvNEwj4rrS75KuAuZWtntmZo1o2lOjekmaX/J9ekRM/8AqpR2BEcADwLYpaImIFZL6pGr9eH/HcHkqa6i8rE25nXQgsMMmLJebPYZuzx33/bTIJtgmenudr6qzD2rCpVErI2JUI+vqBtwAnBYR/yiz7vpmRJnysio5Z/payYpqgFfJzjmYmeWikruHKiGpI1mQ/iYifpeKX5LUN/VK+wIvp/LlwICSxfsDL6bycRuV39nYtsvug7JI3wPonaaeEfGRiJjZ2IrNzCqx/h1QlUxl15Pl1WXAExHx45JZs4H1I/KTgBtLyo9Lo/pjgVXpdMCtwHhJPdPI//hUVlbZnmlEhKRZEbFnYysyM9tUOV1m+jHgWOARSYtS2beAi4GZkk4A/goclebNAQ4FlgJrgOMBIuJVSecD81K989YPRpVTyTnTByWNjIiFFe6QmVnFsteW5DKafy8N30x1YD31A5jSwLpmADOasv0Gw1RSh4ioA/YBviTpGWB1amxExMiGljUza4oquAGqbM/0QWAkcEQrtcXMNlNV8JyTsmEqgIh4ppXaYmaboewRfO0/TcuFaW9JX29o5kajZWZmmyyvS6OKVC5Ma4FuVMfTscysjdoc3gG1IiLOa7WWmNlmqwqO8hs/Z2pm1tKqoGNaNkw/cF2WmVneqn4AqpIr/s3M8lAFWbpJT40yM8tPO3jzaCUcpmZWKAG1VdA1dZiaWeHcMzUzy0EeDzopmsPUzAqVjeYX3Yrmc5iaWbGa9g6oNsthamaFq+rrTM3MWoMP883MciFfGmVm1lzC50zNzJrPd0CZmeWjGgagquEB12bWjq0/zK9kanRd0gxJL0t6tKTsO5L+JmlRmg4tmfdNSUslPSXp4JLyCalsqaSpleyHw9TMClcjVTRV4HJgQj3lP4mI4WmaAyBpV2AisFta5peSaiXVAr8ADgF2BY5JdcvyYb6ZFS6vo/yIuFvSjhVWPxy4NiLWAs9JWgqMTvOWRsSzWdt0bar7eLmVuWdqZoWSsqdGVTIBvSTNL5kmV7iZkyUtTqcBeqayfsCykjrLU1lD5WU5TM2scKpwAlZGxKiSaXoFq78EGAQMB1YAPyrZ7MaiTHlZPsw3s0K19GtLIuKlDduSfgXclL4uBwaUVO0PvJg+N1TeIPdMzaxwTeiZNn3dUt+Sr0cC60f6ZwMTJXWWNBAYDDwIzAMGSxooqRPZINXsxrbjnqmZFS6vjqmka4BxZOdWlwPnAOMkDSc7VH8eOBEgIh6TNJNsYKkOmBIR76b1nAzcCtQCMyLisca27TA1s4Ipt4dDR8Qx9RRfVqb+hcCF9ZTPAeY0ZdsOUzMrlN8BZWaWk/YfpQ5TMyua/A4oM7NmE9VxWZHD1MwK556pmVkO2n+UOkzNrA2ogo6pw9TMiuVLo8zMciFUBQf6DlMzK1wVdEwdpmZWrOzSqPafpg5TMytWhe93auscpmZWOIepmVkOPABlZtZMvjTKzCwnVZClDlMzK141HOZXw8Na2pXly5dx2IQDGTNiGP+y5+5c+otpAHzh2GPYd8ye7DtmT3YfOoh9x+wJwLp16zjpS8ez917DGTNiGD/+wcVFNn+z19Tf33rLlv2V/r234mf/+aP6VrtZy16oV9nUlrln2so61Hbggot+wB4jRvLGG2+w/8dGM+6Ag5hx1TUb6pw19Rv06LEVAL//3fWsXbuWP89bxJo1axg78qN85uiJbL/DjgXtweatqb+/9b79f0/noPETWru57YTvgLJN8OG+fflw3+xlid27d2fnIUNZ8eLfGLrLrgBEBLNuuJ7ZN88FskeTrVm9mrq6Ot5+6y06depE9+49Cmv/5q6pvz+AP8y+kR0GDqTrll0LaXObVyXXmbbIYb6k8yWdWvL9QklflXSGpHmSFks6N83rKukPkh6W9Kikz7ZEm9qiv77wPIsfXsSee43ZUPbn++6hT59tGbTTYAAOP/LTbNm1K0M/0p+PDhnIyad+nZ7bbFNUk61EJb+/1atX89Mff58zv/UfRTWzXWjJVz23lpY6Z3oZMAlAUg3Ze6dfInsv9WhgOLCnpP2ACcCLEbFHRAwDbqlvhZImS5ovaf7Kla+0ULNbz5tvvslxxxzNRd//MT16/LOnecPM6/j00f/892TB/Aepra3liWeWsejxpfxi2k94/rlni2iylaj093fxBd/hpFNOo1u3bgW0sn1Yf2lUJVOj65JmSHpZ0qMlZdtImitpSfrZM5VL0jRJS1MHb2TJMpNS/SWSJlWyHy1ymB8Rz0v6u6QRwLbAQ8BewPj0GaAbWbjeA/xQ0veAmyLingbWOR2YDjBi5KhoiXa3lnXr1jHp347iqInHcNgRR24or6ur46bZs7jj3gc3lF1/3bUc+PGD6dixI7379GHM2L15aOECdhz4kSKabjTt9zd/3oPcOOt3nPPtqaxa9To1NTV07rwFk0+aUkTT2678up2XAz8Hriwpmwr8MSIuljQ1fT8TOIQsgwYDY4BLgDGStgHOAUYBASyQNDsiXiu34ZYczf9/wOeB44EZZH9cF0XE8DTtFBGXRcTTwJ7AI8BFkqr6eCgiOOWkL7HzkF2Y8tWvvW/enX+6ncE7D6Ff//4byvoPGMA9d95BRLB69Wrmz3uAwTsPae1mW9LU39/Nt9/F4iefYfGTz3DSlK/y9TOmOkjroQr/a0xE3A28ulHx4cAV6fMVwBEl5VdG5n5ga0l9gYOBuRHxagrQuWRH0GW1ZJjOSg3YC7g1TV+Q1A1AUj9JfSRtB6yJiF8DPwRGNrTCanD/X+7juqt/zd133bHhUprbbpkDwO+un8mnj5r4vvpfPPErrF79JnuP2oMD9x3Lvx07iWEf3b2IphtN//1ZZaTKpk20bUSsAEg/+6TyfsCyknrLU1lD5WW12Gh+RLwj6Q7g9Yh4F7hN0i7AX9LLs94E/h3YCfiBpPeAdcBJLdWmtuBf9t6H19bU1Tvvl9NnfKCsW7duXP6b61q6WVahpv7+Sk0965yWaFJVaEJO9pI0v+T79HQKMK/NRpnyslosTNPA01jgqA2tifgp8NONqj5D1ms1s81V5Wm6MiJGNXHtL0nqGxEr0mH8y6l8OTCgpF5/4MVUPm6j8jsb20hLXRq1K7CU7KTvkpbYhplVBwlqpIqmTTSbdHVR+nljSflxaVR/LLAqnQa4FRgvqWca+R9PBR2+lhrNfxzwcLOZVSSvwXxJ15D1KntJWk42Kn8xMFPSCcBf+efR8hzgULKO3xqywXIi4lVJ5wPzUr3zImLjQa0P8B1QZla8nNI0Io5pYNaB9dQNoN5LKyJiBtlVSBVzmJpZwXxvvplZLqrh3nyHqZkVqj3cd18Jh6mZFa8K0tRhamaFa8ZlT22Gw9TMCtf+o9RhamZFq5KTpg5TMyucL40yM2sm4UujzMxyUQVZ6jA1szagCtLUYWpmhfOlUWZmOWj/UeowNbO2oArS1GFqZoXKLjNt/2nqMDWzYjXvZXlthsPUzApXBVnqMDWzoglVQdfUYWpmhauCLHWYmlmxquQ5Jw5TM2sDqiBNa4pugJmZKvyvonVJz0t6RNIiSfNT2TaS5kpakn72TOWSNE3SUkmLJY3c1H1wmJpZ4aTKpibYPyKGR8So9H0q8MeIGAz8MX0HOAQYnKbJwCWbug8OUzMrnCqcmuFw4Ir0+QrgiJLyKyNzP7C1pL6bsgGHqZkVSyCpoqlCAdwmaYGkyals24hYAZB+9knl/YBlJcsuT2VN5gEoMytUEx8O3Wv9edBkekRM36jOxyLiRUl9gLmSnmxk8xuLiltTwmFqZoVrwiH8ypLzoPWKiBfTz5clzQJGAy9J6hsRK9Jh/Mup+nJgQMni/YEXm9D0DXyYb2aFy2sASlJXSd3XfwbGA48Cs4FJqdok4Mb0eTZwXBrVHwusWn86oKncMzWzwuX41KhtgVnp/GoH4OqIuEXSPGCmpBOAvwJHpfpzgEOBpcAa4PhN3bDD1MyKl1OWRsSzwB71lP8dOLCe8gCm5LFth6mZFa4KboBymJpZsSS/A8rMLB/tP0sdpmZWvCrIUoepmRWvCo7yHaZmVrTKnwjVljlMzaxQTbydtM1ymJpZ4RymZmY58GG+mVlzNf3Bz22Sw9TMCuUX6pmZ5aUK0tRhamaF8zlTM7Mc+JypmVkOHKZmZjnwYb6ZWTNVyx1Qyh403b5IegV4oeh2tKBewMqiG2GbpNp/dztERO88VyjpFrI/t0qsjIgJeW4/L+0yTKudpPmNvYHR2ib/7jZffjupmVkOHKZmZjlwmLZN04tugG0y/+42Uz5namaWA/dMzcxy4DA1M8uBw9TMLAcOUzOzHDhM2zhJ/h21I5L6Stqy6HZY6/Nf1DZG0ucknSXpVEnbR8R7DtT2QdIngUuAfkW3xVqf/5K2IZKmAKcAbwA7ADdI2iki3iu2ZdYYSfsC5wL/ERFLJG0hqUeaVwWP8bDG+KlRbYAkRXbB70eBr0bEg6n8TOBsSV+OiLcKbaTVq+R3twtwF/CupK8AE4C3JZ0REdX8UB5L3DNtGwZL6gj0B8aVlN8MvOMgbdO6p5/zgC7Ab4EALgOeA7YuqF3WytwzLZikk4HTgFnAw8BXJa2MiBlkPdVBkraKiFVFttM+SNIngGMkPQssAKYCNRHxd0kjgIuBq4tso7Ueh2mB0oDF7sDBwHigB3A7cEH6y7g/8FkHadsjaS/g+8ARZL3QHYFbslnaB/hv4GsR8XBhjbRW5XvzCyKpH/AX4PaI+IKkzsCngQFAT7IHZqyKiL8X2Eyrh6TtyUL0ZbKHlP8UOCoiXki/115Ax4iYX2AzrZX5nGlBIuJvZIf3EyRNjIi1wLXAK8B7wKsO0rZH0rbAyWRP059M9o/ekSlIPwN8BXjCQbr58WF+gSLid5LWAhdJIiKulXQ50DUi3ii4eVa/lcDOwEeAp4DbgB6StgPOBs6KiHcKbJ8VxIf5bYCkQ8h6OF+LiOuLbo99UArLbhHxdDrM/wbwNPAhsnPbbwK/iogbSy6Xss2Iw7SNkPRx4JmIeLbottj7SeoKXADsQXYq5i9kh/NXRcSfJXUnO0f6qoN08+UwNauApC2AXYEzgcVk57ufBz4VEcsKbJq1ET5nalaBiHgbWChpMtCZbPB2ONmNFsvcIzX3TM02kaRvk71HfnLRbbHi+dIosyYqeXDJM8AOkroU2R5rGxymZk0UEZECdTVwup+dYODDfDOzXLhnamaWA4epmVkOHKZmZjlwmFq9JL0raZGkRyX9tjkviZM0TtJN6fMnJU0tU3fr9KT6pm7jO5K+saltNGsuh6k15K2IGB4Rw4B3gC+XzlSmyf//RMTsiLi4TJWtyW7VNGtXHKZWiXuAnSTtKOkJSb8EFgIDJI2X9BdJC1MPthuApAmSnpR0L/Cp9SuS9HlJP0+ft5U0S9LDadqb7On0g1Kv+Aep3hmS5klaLOncknV9W9JTkm4HhrTan4ZZPRymVpakDsAhwCOpaAhwZUSMILvO8izgoIgYCcwHvp7uY/8VcBiwL/DhBlY/DbgrIvYARgKPkb3645nUKz5D0nhgMDCa7PbNPSXtJ2lPYCIwgiys98p5182axPfmW0O6SFqUPt9D9mqO7YAXIuL+VD6W7OEf96WbgjqRPVFpKPBcRCwBkPRrsgcpb+wA4DiAiHgXWCWp50Z1xqfpofS9G1m4dgdmRcSatI3Zzdpbs2ZymFpD3oqI4aUFKTBXlxYBcyPimI3qDSd7Q2ceBFwUEf+10TZOy3EbZs3mw3xrjvuBj0naCUDSlpJ2Bp4EBkoalOod08DyfwROSsvWSuoBvME/X58McCvwhZJzsf0k9QHuBo6U1CU9T/SwnPfNrEkcprbJIuIV4PPANZIWk4Xr0PS4usnAH9IA1AsNrOJUYH9Jj5C9Knm39N6r+9IlWT+IiNvIXpf8l1TveqB7RCwErgMWATeQnYowK4zvzTczy4F7pmZmOXCYmpnlwGFqZpYDh6mZWQ4cpmZmOXCYmpm/uLBhAAAADUlEQVTlwGFqZpaD/wVlo2w3AwXz1gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 34s, sys: 3.08 s, total: 1min 37s\n",
"Wall time: 3min 49s\n"
]
}
],
"source": [
"%%time\n",
"from xgboost import XGBClassifier\n",
"\n",
"params = {\n",
" 'random_state': [123],\n",
" 'learning_rate': [0.1],\n",
" 'n_estimators': [500],\n",
" 'max_depth': [4]\n",
"}\n",
"clf_xgb, df_xgb, features_xgb = train_cv(XGBClassifier, df_train, features, params)\n",
"test_result(clf_xgb, df_test, features)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mean_test_AUC</th>\n",
" <th>mean_test_Accuracy</th>\n",
" <th>mean_test_F1</th>\n",
" <th>mean_train_AUC</th>\n",
" <th>mean_train_Accuracy</th>\n",
" <th>mean_train_F1</th>\n",
" <th>param_learning_rate</th>\n",
" <th>param_max_depth</th>\n",
" <th>param_n_estimators</th>\n",
" <th>rank_test_AUC</th>\n",
" <th>rank_test_Accuracy</th>\n",
" <th>rank_test_F1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.725059</td>\n",
" <td>0.909779</td>\n",
" <td>0.555523</td>\n",
" <td>0.802156</td>\n",
" <td>0.94023</td>\n",
" <td>0.707912</td>\n",
" <td>0.1</td>\n",
" <td>4</td>\n",
" <td>500</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mean_test_AUC mean_test_Accuracy mean_test_F1 mean_train_AUC \\\n",
"0 0.725059 0.909779 0.555523 0.802156 \n",
"\n",
" mean_train_Accuracy mean_train_F1 param_learning_rate param_max_depth \\\n",
"0 0.94023 0.707912 0.1 4 \n",
"\n",
" param_n_estimators rank_test_AUC rank_test_Accuracy rank_test_F1 \n",
"0 500 1 1 1 "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"to_result_df(df_xgb).head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.feature_selection import SelectFromModel\n",
"\n",
"def select_features(clf, features):\n",
" sfm = SelectFromModel(clf, prefit=True)\n",
" return sfm, sfm.transform(np.array([features])).tolist()[0]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['age', 'balance', 'day', 'n_month', 'duration', 'campaign', 'pdays']"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_, features_selected_lgbm = select_features(clf_lgbm, features)\n",
"features_selected_lgbm"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['loan',\n",
" 'n_month',\n",
" 'duration',\n",
" 'housing',\n",
" 'contact_unknown',\n",
" 'poutcome_success',\n",
" 'poutcome_unknown',\n",
" 'month_apr',\n",
" 'month_feb',\n",
" 'month_jun',\n",
" 'month_mar',\n",
" 'month_oct',\n",
" 'month_sep']"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_, features_selected_xgb = select_features(clf_xgb, features)\n",
"features_selected_xgb"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['loan',\n",
" 'housing',\n",
" 'job_retired',\n",
" 'job_student',\n",
" 'contact_cellular',\n",
" 'contact_telephone',\n",
" 'contact_unknown',\n",
" 'poutcome_failure',\n",
" 'poutcome_other',\n",
" 'poutcome_success',\n",
" 'poutcome_unknown',\n",
" 'month_aug',\n",
" 'month_dec',\n",
" 'month_jan',\n",
" 'month_jul',\n",
" 'month_jun',\n",
" 'month_mar',\n",
" 'month_nov',\n",
" 'month_oct',\n",
" 'month_sep']"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_, features_selected_lr = select_features(clf_lr, features)\n",
"features_selected_lr"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['age',\n",
" 'balance',\n",
" 'campaign',\n",
" 'contact_cellular',\n",
" 'contact_telephone',\n",
" 'contact_unknown',\n",
" 'day',\n",
" 'duration',\n",
" 'housing',\n",
" 'job_retired',\n",
" 'job_student',\n",
" 'loan',\n",
" 'month_apr',\n",
" 'month_aug',\n",
" 'month_dec',\n",
" 'month_feb',\n",
" 'month_jan',\n",
" 'month_jul',\n",
" 'month_jun',\n",
" 'month_mar',\n",
" 'month_nov',\n",
" 'month_oct',\n",
" 'month_sep',\n",
" 'n_month',\n",
" 'pdays',\n",
" 'poutcome_failure',\n",
" 'poutcome_other',\n",
" 'poutcome_success',\n",
" 'poutcome_unknown']"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"features_selected = sorted(set(features_selected_lgbm) | set(features_selected_xgb) | set(features_selected_lr))\n",
"features_selected"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"29"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(features_selected)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best params: {'learning_rate': 0.1, 'max_depth': 6, 'n_estimators': 500, 'num_leaves': 10, 'random_state': 123}\n",
"best mean val score: 0.9095824424291578\n",
"accuracy: 0.9128704113224237\n",
" precision recall f1-score support\n",
"\n",
" 0 0.94 0.97 0.95 3970\n",
" 1 0.69 0.53 0.60 552\n",
"\n",
" accuracy 0.91 4522\n",
" macro avg 0.81 0.75 0.77 4522\n",
"weighted avg 0.91 0.91 0.91 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 5.83 s, sys: 150 ms, total: 5.98 s\n",
"Wall time: 28.8 s\n"
]
}
],
"source": [
"%%time\n",
"params = {\n",
" 'random_state': [123],\n",
" 'num_leaves': [10],\n",
" 'learning_rate': [0.1],\n",
" 'n_estimators': [500],\n",
" 'max_depth': [6]\n",
"}\n",
"clf_lgbm2, df_lgbm2 = train_cv(LGBMClassifier, df_train, features_selected, params, show_importance=False)\n",
"test_result(clf_lgbm2, df_test, features_selected)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best params: {'learning_rate': 0.1, 'max_depth': 4, 'n_estimators': 500, 'random_state': 123}\n",
"best mean val score: 0.9087222590872226\n",
"accuracy: 0.910437859354268\n",
" precision recall f1-score support\n",
"\n",
" 0 0.93 0.97 0.95 3970\n",
" 1 0.69 0.49 0.57 552\n",
"\n",
" accuracy 0.91 4522\n",
" macro avg 0.81 0.73 0.76 4522\n",
"weighted avg 0.90 0.91 0.90 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 48.1 s, sys: 190 ms, total: 48.3 s\n",
"Wall time: 2min 24s\n"
]
}
],
"source": [
"%%time\n",
"params = {\n",
" 'random_state': [123],\n",
" 'learning_rate': [0.1],\n",
" 'n_estimators': [500],\n",
" 'max_depth': [4]\n",
"}\n",
"clf_xgb2, df_xgb2 = train_cv(XGBClassifier, df_train, features_selected, params, show_importance=False)\n",
"test_result(clf_xgb2, df_test, features_selected)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"warnings.simplefilter(action='ignore', category=DeprecationWarning)\n",
"from imblearn.under_sampling import RandomUnderSampler\n",
"from imblearn.over_sampling import RandomOverSampler\n",
"\n",
"def train_cv_sample(\n",
" model_cls, df_train, features, params, target='y',\n",
" show_importance=True, refit='Accuracy', sample='rus', rate=1):\n",
" if not features:\n",
" features = df_train.corr().columns.tolist()\n",
" if target in features:\n",
" features.pop(features.index(target))\n",
" train = df_train[[target] + features]\n",
" n_neg = (train[target] == 0).sum()\n",
" n_pos = (train[target] == 1).sum()\n",
" X_train = train[features].fillna(0).values\n",
" y_train = train[target].values\n",
" print(X_train.shape, y_train.shape)\n",
" if sample == 'rus':\n",
" sampler = RandomUnderSampler(ratio={0: int(n_pos * rate), 1: n_pos}, random_state=123)\n",
" X_train, y_train = sampler.fit_sample(X_train, y_train)\n",
" print(X_train.shape, y_train.shape)\n",
" elif sample == 'ros':\n",
" sampler = RandomOverSampler(ratio={0: n_neg, 1: int(n_neg / rate)}, random_state=123)\n",
" X_train, y_train = sampler.fit_sample(X_train, y_train)\n",
" print(X_train.shape, y_train.shape)\n",
" scoring = {\n",
" 'AUC': make_scorer(roc_auc_score),\n",
" 'Accuracy': make_scorer(accuracy_score),\n",
" 'F1': make_scorer(f1_score)}\n",
" clf = GridSearchCV(\n",
" model_cls(), param_grid=params, cv=5, n_jobs=4,\n",
" scoring=scoring, refit=refit, return_train_score=True)\n",
" clf.fit(X_train, y_train)\n",
" print('best params:', clf.best_params_)\n",
" print('best mean val score: ', clf.best_score_)\n",
" clf_best = model_cls(**clf.best_params_)\n",
" clf_best.fit(X_train, y_train)\n",
" if show_importance:\n",
" plt.figure(figsize=(10, 20))\n",
" df_fi = pd.DataFrame(\n",
" {'feature': features, 'feature_importance': clf.best_estimator_.feature_importances_[:]}\n",
" ).sort_values('feature_importance', ascending=False)\n",
" sns.barplot(x=df_fi['feature_importance'], y=df_fi['feature'])\n",
" plt.show()\n",
" return clf_best, pd.DataFrame(clf.cv_results_), df_fi['feature'].tolist()\n",
" else:\n",
" return clf_best, pd.DataFrame(clf.cv_results_)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(40689, 29) (40689,)\n",
"(23685, 29) (23685,)\n",
"best params: {'learning_rate': 0.1, 'max_depth': 6, 'n_estimators': 500, 'num_leaves': 10, 'random_state': 123}\n",
"best mean val score: 0.880050664977834\n",
"accuracy: 0.9091110128261831\n",
" precision recall f1-score support\n",
"\n",
" 0 0.96 0.94 0.95 3970\n",
" 1 0.61 0.72 0.66 552\n",
"\n",
" accuracy 0.91 4522\n",
" macro avg 0.78 0.83 0.80 4522\n",
"weighted avg 0.92 0.91 0.91 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 2.75 s, sys: 60 ms, total: 2.81 s\n",
"Wall time: 18.2 s\n"
]
}
],
"source": [
"%%time\n",
"params = {\n",
" 'random_state': [123],\n",
" 'num_leaves': [10],\n",
" 'learning_rate': [0.1],\n",
" 'n_estimators': [500],\n",
" 'max_depth': [6]\n",
"}\n",
"clf_lgbm_rus, df_lgbm_rus = train_cv_sample(\n",
" LGBMClassifier, df_train, features_selected, params, show_importance=False, sample='rus', rate=4)\n",
"test_result(clf_lgbm_rus, df_test, features_selected)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(40689, 29) (40689,)\n",
"(44940, 29) (44940,)\n",
"best params: {'learning_rate': 0.1, 'max_depth': 6, 'n_estimators': 500, 'num_leaves': 10, 'random_state': 123}\n",
"best mean val score: 0.8972185135736538\n",
"accuracy: 0.9122069880583813\n",
" precision recall f1-score support\n",
"\n",
" 0 0.96 0.94 0.95 3970\n",
" 1 0.63 0.68 0.66 552\n",
"\n",
" accuracy 0.91 4522\n",
" macro avg 0.79 0.81 0.80 4522\n",
"weighted avg 0.92 0.91 0.91 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4.99 s, sys: 100 ms, total: 5.09 s\n",
"Wall time: 27.2 s\n"
]
}
],
"source": [
"%%time\n",
"params = {\n",
" 'random_state': [123],\n",
" 'num_leaves': [10],\n",
" 'learning_rate': [0.1],\n",
" 'n_estimators': [500],\n",
" 'max_depth': [6]\n",
"}\n",
"clf_lgbm_ros, df_lgbm_ros = train_cv_sample(\n",
" LGBMClassifier, df_train, features_selected, params, show_importance=False, sample='ros', rate=4)\n",
"test_result(clf_lgbm_ros, df_test, features_selected)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(40689, 29) (40689,)\n",
"(23685, 29) (23685,)\n",
"best params: {'learning_rate': 0.1, 'max_depth': 4, 'n_estimators': 500, 'random_state': 123}\n",
"best mean val score: 0.8805150939413131\n",
"accuracy: 0.9044670499778859\n",
" precision recall f1-score support\n",
"\n",
" 0 0.95 0.94 0.95 3970\n",
" 1 0.60 0.67 0.63 552\n",
"\n",
" accuracy 0.90 4522\n",
" macro avg 0.77 0.81 0.79 4522\n",
"weighted avg 0.91 0.90 0.91 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 28.9 s, sys: 340 ms, total: 29.2 s\n",
"Wall time: 1min 27s\n"
]
}
],
"source": [
"%%time\n",
"params = {\n",
" 'learning_rate': [0.1],\n",
" 'max_depth': [4],\n",
" 'n_estimators': [500],\n",
" 'random_state': [123]\n",
"}\n",
"clf_xgb_rus, df_xgb_rus = train_cv_sample(\n",
" XGBClassifier, df_train, features_selected, params, show_importance=False, sample='rus', rate=4)\n",
"test_result(clf_xgb_rus, df_test, features_selected)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(40689, 29) (40689,)\n",
"(44940, 29) (44940,)\n",
"best params: {'learning_rate': 0.1, 'max_depth': 4, 'n_estimators': 500, 'random_state': 123}\n",
"best mean val score: 0.8969514908767245\n",
"accuracy: 0.916187527642636\n",
" precision recall f1-score support\n",
"\n",
" 0 0.96 0.95 0.95 3970\n",
" 1 0.65 0.69 0.67 552\n",
"\n",
" accuracy 0.92 4522\n",
" macro avg 0.80 0.82 0.81 4522\n",
"weighted avg 0.92 0.92 0.92 4522\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 11s, sys: 1 s, total: 1min 12s\n",
"Wall time: 2min 56s\n"
]
}
],
"source": [
"%%time\n",
"params = {\n",
" 'learning_rate': [0.1],\n",
" 'max_depth': [4],\n",
" 'n_estimators': [500],\n",
" 'random_state': [123]\n",
"}\n",
"clf_xgb_ros, df_xgb_ros = train_cv_sample(\n",
" XGBClassifier, df_train, features_selected, params, show_importance=False, sample='ros', rate=4)\n",
"test_result(clf_xgb_ros, df_test, features_selected)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"# import xgboost"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# for i in range(500):\n",
"# dot = xgboost.to_graphviz(clf_xgb_ros, num_trees=i, rankdir='LR', out_file='tree.dot')\n",
"# dot.format = \"pdf\"\n",
"# dot.render(\"xgb%40d\" % i)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment