{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Lab 6: Trees and forests" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The goal of this lab is to explore and understand tree-based models on classification problems.\n", "\n", "We will focus successively on decision trees, bagging trees and random forests. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import required libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "# import required libraries\n", "import time\n", "import math\n", "import pandas as pd\n", "%pylab inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Classification data\n", "We will use the same data as in Lab 4: the samples are tumors, each described by the expression (= the abundance) of 3,000 genes. The goal is to separate the endometrium tumors from the uterine ones." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ID_REF1554530_at1553185_at1554340_a_at1556202_at1553957_at1555469_a_at1553660_at1554681_a_at1554938_a_at...1553967_at1553362_at1553002_at1556194_a_at1556420_s_at1555855_at1554508_at1555097_a_at1556371_atTissue
011772210.813233.727.2167.8450.7283.86.48.626.7...165.243.777.042.2154.8266.6444.066.950.6Endometrium
17663812.64986.81.7221.1380.8394.3121.28.0153.8...190.73.284.0183.0288.020.699.36.412.2Endometrium
28895216.66053.8121.4342.7217.6367.9159.710.8124.4...95.917.172.3292.9209.511.651.333.833.4Endometrium
3766329.96109.123.0139.3501.8289.9101.79.7204.8...235.137.981.5109.3537.758.773.958.915.4Endometrium
48896613.18430.917.429.4449.1248.2104.111.294.5...125.059.9186.8122.5355.265.1139.914.111.2Endometrium
\n", "

5 rows × 3002 columns

\n", "
" ], "text/plain": [ " ID_REF 1554530_at 1553185_at 1554340_a_at 1556202_at 1553957_at \\\n", "0 117722 10.8 13233.7 27.2 167.8 450.7 \n", "1 76638 12.6 4986.8 1.7 221.1 380.8 \n", "2 88952 16.6 6053.8 121.4 342.7 217.6 \n", "3 76632 9.9 6109.1 23.0 139.3 501.8 \n", "4 88966 13.1 8430.9 17.4 29.4 449.1 \n", "\n", " 1555469_a_at 1553660_at 1554681_a_at 1554938_a_at ... 1553967_at \\\n", "0 283.8 6.4 8.6 26.7 ... 165.2 \n", "1 394.3 121.2 8.0 153.8 ... 190.7 \n", "2 367.9 159.7 10.8 124.4 ... 95.9 \n", "3 289.9 101.7 9.7 204.8 ... 235.1 \n", "4 248.2 104.1 11.2 94.5 ... 125.0 \n", "\n", " 1553362_at 1553002_at 1556194_a_at 1556420_s_at 1555855_at 1554508_at \\\n", "0 43.7 77.0 42.2 154.8 266.6 444.0 \n", "1 3.2 84.0 183.0 288.0 20.6 99.3 \n", "2 17.1 72.3 292.9 209.5 11.6 51.3 \n", "3 37.9 81.5 109.3 537.7 58.7 73.9 \n", "4 59.9 186.8 122.5 355.2 65.1 139.9 \n", "\n", " 1555097_a_at 1556371_at Tissue \n", "0 66.9 50.6 Endometrium \n", "1 6.4 12.2 Endometrium \n", "2 33.8 33.4 Endometrium \n", "3 58.9 15.4 Endometrium \n", "4 14.1 11.2 Endometrium \n", "\n", "[5 rows x 3002 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load the endometrium vs. uterus tumor data\n", "endometrium_data = pd.read_csv('data/small_Endometrium_Uterus.csv', sep=\",\") # load data\n", "endometrium_data.head(n=5) # adjust n to view more data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Create the design matrix and target vector\n", "X = endometrium_data.drop(['ID_REF', 'Tissue'], axis=1).values\n", "y = pd.get_dummies(endometrium_data['Tissue']).values[:,1]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "## make folds\n", "from sklearn import model_selection\n", "skf = model_selection.StratifiedKFold(n_splits=5)\n", "skf.get_n_splits(X, y)\n", "folds = [(tr,te) for (tr,te) in skf.split(X, y)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cross-validation procedures" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def cross_validate_clf(design_matrix, labels, classifier, cv_folds):\n", " \"\"\" Perform a cross-validation and returns the predictions.\n", " \n", " Parameters:\n", " -----------\n", " design_matrix: (n_samples, n_features) np.array\n", " Design matrix for the experiment.\n", " labels: (n_samples, ) np.array\n", " Vector of labels.\n", " classifier: sklearn classifier object\n", " Classifier instance; must have the following methods:\n", " - fit(X, y) to train the classifier on the data X, y\n", " - predict_proba(X) to apply the trained classifier to the data X and return probability estimates \n", " cv_folds: sklearn cross-validation object\n", " Cross-validation iterator.\n", " \n", " Return:\n", " -------\n", " pred: (n_samples, ) np.array\n", " Vectors of predictions (same order as labels).\n", " \"\"\"\n", " pred = np.zeros(labels.shape)\n", " for tr, te in cv_folds:\n", " classifier.fit(design_matrix[tr,:], labels[tr])\n", " pos_idx = list(classifier.classes_).index(1)\n", " pred[te] = (classifier.predict_proba(design_matrix[te,:]))[:, pos_idx]\n", " return pred" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def cross_validate_clf_optimize(design_matrix, labels, classifier, cv_folds):\n", " \"\"\" Perform a cross-validation and returns the predictions.\n", " \n", " Parameters:\n", " -----------\n", " design_matrix: (n_samples, n_features) np.array\n", " Design matrix for the experiment.\n", " labels: (n_samples, ) np.array\n", " Vector of labels.\n", " classifier: sklearn classifier object\n", " Classifier instance; must have the following methods:\n", " - fit(X, y) to train the classifier on the data X, y\n", " - predict_proba(X) to apply the trained classifier to the data X and return probability estimates \n", " cv_folds: sklearn cross-validation object\n", " Cross-validation iterator.\n", " \n", " Return:\n", " -------\n", " pred: (n_samples, ) np.array\n", " Vectors of predictions (same order as labels).\n", " \"\"\"\n", " pred = np.zeros(labels.shape)\n", " for tr, te in cv_folds:\n", " classifier.fit(design_matrix[tr,:], labels[tr])\n", " print(classifier.best_params_)\n", " pos_idx = list(classifier.best_estimator_.classes_).index(1)\n", " pred[te] = (classifier.predict_proba(design_matrix[te,:]))[:, pos_idx]\n", " return pred" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Decision Trees\n", "A decision tree predicts the value of a target variable by learning simple decision rules inferred from the data features.\n", "\n", "In scikit-learn, they are implemented in [tree.DecisionTreeClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html) for classification and [tree.DecisionTreeRegressor](http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html) for regression." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from sklearn import tree\n", "from sklearn.tree import DecisionTreeClassifier" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.1 Toy dataset\n", "In order to better understand how a decision tree processes the feature space, we will first work on a simulated dataset. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/ipykernel_launcher.py:5: RuntimeWarning: covariance is not symmetric positive-semidefinite.\n", " \"\"\"\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATsAAAEyCAYAAACF03cPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA2xklEQVR4nO2de3hV5ZX/v28uJCSQREOMWK4tKFBhDCRorXSMMa0IotAHylSOts7viU0v8htwmPJzgjPwzCDI4fdzns5gOzpWAY14r7dpoTktihUT5SIEL6hRUImIDopcE9bvj5WXvc8+e5/rPte9Ps9znp19e/d7Tk6+Wetd612vIiIIgiDkOnnp7oAgCEIqELETBMETiNgJguAJROwEQfAEInaCIHgCETtBEDyBa2KnlMpXSm1TSj3jVpuCIAhu4aZlNx/AHhfbEwRBcA1XxE4pNQTANAD3uNGeIAiC2xS41M7/A7AIwECnC5RSTQCaAKC0tHTSmDFjXHq0IAgC8+qrr35KRFV25xIWO6XUdACfENGrSqnLna4jot8A+A0A1NbWUkdHR6KPFgRBCEIp9b7TOTfc2G8DmKGU6gLQCuAKpdQ6F9oVBEFwjYTFjogWE9EQIhoBYC6ANiKal3DPBEEQXETy7ARB8ARuBSgAAET0JwB/crNNQRAENxDLThAETyBiJwiCJxCxEwTBE4jYObByJRAIBB8LBPi4IAjZh4idA3V1wJw5huAFArxfV5fefgmCEB8idg7U1wMbNrDALVnC2w0bgPZ2sfgEIRsRsQtDfT3Q3AwsW8bb+vpQi+/mm4GZM4MtPhE/Qcg8XM2zyzUCAWDNGqClhbf19cEWX3Mz8PDDgHk1Su3ubtiQvn4nm1OnTmH//v04fvx4uruS9RQXF2PIkCEoLCxMd1dyHhE7B7RozZpliJxZxCoq2OJraTHOTZ0KPPYY8MwzfCxX2b9/PwYOHIgRI0ZAKZXu7mQtRIRDhw5h//79GDlyZLq7k/OIG+tAezsL29y5LGQA77e2stv60UdASQlw1118bupUYO1a4Pvfz22hA4Djx4+jsrJShC5BlFKorKwUCzlFiGXnwKJFxs92buszfcXnZ85koTt5EvD5gOefZ6sw1wVPhM4d5HNMHWLZhUHn2pkDFV//Olt72rWdMQM4cQKoqQEeeMAQRmvEVhCE9CJiFwYdeV29mgMUPh+wfTtwwQV8PhAAHn+cj3/wgSGMOkVFyBx++9vf4rLLLkt3N4Q0ImIXhvp6YPFi4NZb2VV9/nlg1SoOSvz0pyyETz/NFt3ixcA11xiCZ3aDBe/xq1/9CrW1tSgqKsKPfvSjdHdHgIhdRHp6gHnzOPjQ3AwsWMDu7D33sMDV17PALV8OLF0qFp0TXpt+d9555+Ef//EfcdNNN6W7K0IfInYRqKtji07n2gUCLIB33MECp2dXLF7Mx8WisydV0+/27duHWbNmoaqqCpWVlfj5z39ue938+fMxdOhQlJWVYdKkSXjhhRfOnHvllVdQW1uLsrIyVFdXY8GCBQA4Cj1v3jxUVlaioqICdXV16O7utm1/1qxZuO6661BZWenuGxTiRsQuDOYE4aVLjeBDQQEL3dSpbOVNncqiV1AQen+uWi6x4jT9zs2odW9vL6ZPn47hw4ejq6sLH374IebOnWt7bV1dHbZv347PPvsMP/zhDzF79uwzKSDz58/H/Pnz8cUXX+Cdd97BnL7co/vvvx+HDx/Gvn37cOjQIdx9993o37+/e29ASCo5KXZuuUw6107/Qeo/2J4etuTWrQOmTGEXt6GBBVA/d/VqHsOTwgEGdtPv3OSVV17BRx99hDvvvBOlpaUoLi52DEpoC62goAALFy7EiRMn8OabbwIACgsLsXfvXnz66acYMGAALrnkkjPHDx06hL179yI/Px+TJk1CWVmZu29CSBo5KXaRXKZoxXDRotA/SD0/dvlyHst74QWgsZEDFbNn83NuuIGDGkuX5n6+XSxYp9+5nZ6zb98+DB8+HAVWE9sGv9+PsWPHory8HBUVFTh8+DA+/fRTAMC9996Lt956C2PGjEFdXR2e6Uuq9Pl8+N73voe5c+fivPPOw6JFi3Dq1Cl334SQPIgo5a9JkyZRsmlrIxo0iKilhbdtbaHn9DHrfiRWrCDy+4Pbb24mKiwkGj+eCCDy+Yy2V6xw972lm87OzpjvSfQzj4aXXnqJqqqq6NSpUyHn7rvvPvr2t79NRESbN2+mqqoq2rlzJ/X29hIRUUVFBW3cuDHont7eXnrkkUeoqKiIjhw5EnTuvffeo7Fjx9I999wTtk+33XYb3XjjjWGviefzFOwB0EEOupOTlh0Q3mVKdPxIW3bmsbxHHgEmTABefx0YP56DGqtXSw08jdOQgJvR68mTJ2Pw4MH45S9/ia+++grHjx/Hli1bQq778ssvUVBQgKqqKvT09GDp0qX44osvzpxft24dDh48iLy8PFRUVAAA8vPzEQgE8Prrr6O3txdlZWUoLCxEfn6+bV96enpw/Phx9Pb2ore3F8ePH0dPT497b1aIHScVTOYr3ZadpqWFrbCWFt5fsSL0OjvLzO665mZuq7GRSClj6/e7954yhUy2RN5//3269tpr6eyzz6bKykr6xS9+QUTBll1PTw/ddNNNNHDgQDr33HNpxYoVNHz48DOW3fXXX09VVVVUWlpK48aNoyeeeIKIiB588EE6//zzqaSkhM455xz6xS9+YWtFEhHdfvvtBCDodfvtt9tem8mfZ7aBMJZdVopdJFGKxmWyE8NI9zk9t6mJqKTEEDafzxC+XHNhieSP023k83SPcGKXlW5spABEJJfJKaUECO/emp+7cqXhpgJcGODNNzkC+/zzPIXspZc4HUXSTwQhA3BSwWS+3HBjo3FTnYhkGWr3tqEh9Dq/n604ny/YTW1r4+PmY35/brqyYom4i3ye7oEwll3WlngyByB0Ac1osZvloKuYBAJssfl8wFNPcQmnJ57ga1pbeeL/97/PuXU+Hwcq/ud/OJVi3jwuEmA+tmoV5+UJgpBmnFQwma90W3aR2tRpJX4/UVkZUWkpUf/+RMXFHIjQzy0pIZo0KTjI0dbGFqH5WK4hloi7yOfpHkimZaeUKgawGUARuBjoo0R0e6LthsM85mYtmZ5IEq95rK+mhtu89lrgoYfYOps0Cbj7bsNaGzkSePVVPr5mDfDpp8B99wH9+oWuWyEIQnpxI0BxAsAVRPRXAC4CcJVS6hIX2nUkWTlb5hkT2k1eu5bFy+djYbvmGiPHbvdu4JxzeFtTw+IGALffDgwYIIU8BSGTSFjs+qzHI327hX0vCnNL3OhpXmZR0pFR876ZeCfjBwK8vkRJCUdUf/xjwO/naWGDBxsW3YkTbOVt3AiMGgVceSWLYV2dFPIUhEzCldQTpVS+Umo7gE8AbCSirW60ayVSykm0ZYQizY3V982dyyklTz7J+zU1LGavv84FAN5/H5g8mcWuoIAX4dm8OdTqlLJPgpABOA3mxfMCUAEgAOBCm3NNADoAdAwbNizuAchIgYloAhfxJg9Pn86pJD4fBycuvdRIHi4p4Z8LC92d75mJZOOAunkGRaaRjZ9npoJUzqAAcDuAW8Ndk2g01jrNK9bzRLFHc9vaOCqrc+YuuYSfcemlxgwKgCg/n/dzmWz840yl2B0/fpxuuukmGjZsGA0YMIAuuugieu655xyvz8bPM1MJJ3YJu7FKqSqlVEXfz/0BXAngjUTbdSJSmaBoywjFWlutvZ3H6/qK1mLCBKC4GOjo4CCGUkBpKRfyfPxxCUqE0LkS6LZ8KN0BPp5j9PT0YOjQofjzn/+Mw4cPY9myZZgzZw66urrS3TVv46SC0b4ATACwDcBOALsALIl0T7yWXST3M9oyQnYlmqZNC7XIIpVnamtjtxXgPDzzc3NxTqwmLkvkQBvRo4N4a7fvEh988AHNnDmTBg0aRGeffTb97Gc/I6JQy+6WW26hIUOG0MCBA2nixIm0efPmM+e2bt1KkyZNooEDB9I555xDf/d3f0dERMeOHaPrr7+ezj77bCovL6fa2lo6cOBAVP0aP348Pfroo7bnxLJzDyQzz46IdgKoSbSdaLBLOZk1i2c21Ncb5wEONixaZERDzZZbQQEX11y1ii21igpg4UK2zAAOTABG7l4gwG3YBRoKC4FTp9iy00hunQ3V9cBlG4AX5wCjm4G31/B+tXsflC7LfsUVV2Dt2rXIz89HR0eH7bV1dXVYsmQJysvLcdddd2H27Nno6upCcXHxmbLsPp8PR44cwa5duwAEl2UvKirC9u3boyrL3t3djbfeegvf/OY3XXuvQhw4qWAyX26WeIrGmrMGHFas4JkQpaWGZef3s2VXXs5WWnm5fSUU83PLy3mGRUsLb/U9rrF7Rajlc6CNj6eRhCyRHS1E68Fbl3nppZdo0KBBEYt32lFRUUHbt28nIqIpU6bQkiVL6ODBg0HX3HvvvfStb32LduzYEXWfTp48SQ0NDdQUZiBXLDv3QLaWeIq2vly0EVqrIOpSTOZAhg5u9O8fPnjR1MQCZ26zrMzl4ESKXL9YifuPU/d/R0tS3sfDDz9MTt8tq9itWrWKxowZQ2VlZVReXk5KKdq0aRMREb311ls0d+5cqqyspNraWnr66aeJiIXrn/7pn2js2LE0ePBg+vu//3s6efKkY396e3vpBz/4AU2dOjXsdSJ27pG1YhdLKe9IEVirIFrH7MxWnJ73Gq49O2vR7w8WYlfG7pIsEPGQqWN2mVSW/fTp0/SjH/2ILr/8cjp69GjYfovYuUfWih1RbHlzkdJItCD6fKEianZD9X5JSbD1Fk0/k7LGQhJdv3iI648zBS55T08PTZgwgRYuXEhHjhyhY8eO0YsvvkhEwWL37LPP0uDBg+njjz+mEydO0D//8z9TXl7eGbFbu3YtffLJJ0REtHHjRioqKqJjx45RW1sb7dy5k3p6eujQoUM0YcIEuu+++2z7cvPNN9PFF19MX375ZcR+Z7LYRetdZQpZLXZE4a22aEXGarVZa8w1NfHLfL+uQhytaCWjEkvOWHYpIhPKsnd1dREAKioqotLS0jOvdevW2fY5Uz5PO2Hz+3lsO5kLJblJVotdJAGJ5j+P9RdkHW8z35Pof7JoEpqjJtfG7ARbMuXzdDIc7IZ83MRN6zFrxc4t19D6YepIqg4muPXfynXLLhejsUIImfR5On2HXf0n7vBMN6zHrBU7txQ/2tSTRMYhkjpml2Fk0h9nLpBpn6dV2JIyPGPBrWdkrdi5hXVeq9/P7/z88ykoYBGt4NmJsB7zsz43UwdyEyHT/jiznUz6PJ2yFuz+ibsdvHDDevS82BEZi99oYdMVS0aO5OO63HraI69ukiQ3uHPHX4hOHg4+ePIw0dGPE2rXq2SK2Nl9r3UwzyxsWtDcDF6IZecyOol4/HgWOL1+hN6PZRWwVJj2URFO0JIU4Oh8/TU6feg1Q/BOHib6bFuoAAoROX36dMaIXThLLZnBCxmzcxkdgZ0yhd/1pEm8P2IExb2gdTIHbcNiFjgtYJ3+8ALnYurKu+++Swc//oAF76v9InRxcvr0aTp48CC9++676e5KTFkNkYIXsbq3qYrGZu1SirEQCHCxgN5eYMcOoLGRy6gXFgKff87rS6xbB1x1VWxtmktJmSf/r1xplGU3X+9UTCBmKut4Qr2eSD9uMbDtVmDEPGDPncET7KvreeL9rmXAhS2uTLwfMmQI9u/fj4Pdx4BTrwOF5UC/DwF8mHDbXqO4uBhDhgxJqA03vm+6yrcutGFe1Epjt3yp3d9BNG2ZCbe0qas4qWAyX6m27PT4QlkZL4dYU2OUZvL7+b/ItGnB4w/hiGR2p2RMz2qxbfHZz7JIVlJyBiY7exW3vm+RhmZiCV5Yr9UJ+9b23A7gQdxYw1TW43Y1NUalE/MvKN5obLQmv6voaWRbfPbCk6yk5AxNdvYysX7fnL7DTmsehwteWK/Tfwdm9zZVQT3PiZ3TL1ILm88XHJmN5QOPZXwhqWN6WmC2+IjWKx6zMx83Byms9yWalJyhyc5eJ5bvm534mEuWRSqTpu9xMg7sxDcVBoDnxM7uF2mtN6ctPJ/PuZ1E5gq68ot1EpWXm4IFrdMfammJ8HiKeL5v5nu00MVjecUyQynZQT3PiR1R+DEDfc7nCz9OF2+4PSGTPZpI69YmsayEM8T6fTOLkxafmpr4k+Ktz3Oae649K7HskoDdf5FYvxjRhtvNJBRKt45/dfrZTdXjcjIuJliI18XU/7T1sE4seaZObSbFAIgBT4qd04cfzRfDeo0WtoaG8G27RrSR1lQg43M5iXVGkTWy6kS4vx/z34n1mlRNp/Sc2CX6X8QaQjevSxEu3B4TkUQkUqQ1VUjkNSdZsSJ0WYJI4mNelU9/36dNIyoq4q0ObpSUcIqXeZpZtAGPqVMTS1HxnNi5kZGtgxrmasXRhNujJpyIhIu0tpYY++a2kmlpSU5dzpFIQMPs/gIsbCUlhjFQXs4CGC7jIdJ4eLzGhOfEzi3sco5cNb3tRMSaOmKNtHb6iVpLY7O03HBFM6w0vBA/sXg+ZsNBW3bFxUTV1XRmmuXkyRzoq6kxBK68nGjixNC/H7t+WAU3kWEiEbs4SEVOEBGFikg0whSrpZWoKyqWXVYTzeJQTmNq5qT7piaifv1Y0MwVg8aOJSoo4GN67rm26KJdF8YqiPGmqIjYxUiqIkcJiYhZJJMhkNb7ZMwua4nm+xzuGnOqFsCvwYN5q4VPT8NUiq09Hd21CqZdv8SySyMpWVEpERGxCpddUrFdW/G4ohKNzQmiEZBw12hLq6CAKD/fED2A96dPZ9dVByeam4MTla1/PzJm5yXiFREnkdSC52S5iSvqeaJxDcPlpjY0sJgVFRlCd9ZZLG46aV8H9kaN4nE8s2tsFjxtUFiLgk6dmtj6yyJ22UQkEQx33slyE1fU88Rq2emsA7Nl5ffzmJ0WuoIC+yrfWjD7949sobk9ZJRUsQMwFEAAwB4AuwHMj3SPiF0Y7KKxraXB6Sda8OzG5DY1EG0oCxayl5t4ipn1OW66ouLuZizxjNnppOPp0w2LrbiYrbp+/YzjTjl15vm2kcbe3AwGJlvsBgOY2PfzQABvARgX7h4RuwhY8+y2Nge7quYxOmt6yoE2oodLiR4qDk1lSUWfxXrMOOKZNURkFL0wzy+31qXTAQin0u26bmSk9C23CgSk1I0F8BSAxnDXiNhFgXUGxXMTQ+fIHmhji82caHygjS27h0vZyrMKTjItMBkXzCrCiaA+N2qUIUL6nN/PY2uR2tOWX2FhcKDCyarMeMsuqDFgBIAPAJTZnGsC0AGgY9iwYfG/m1zDTnw6/Sxg1rmxDxYYAmi2nKzXH2gLFku7tpNlgUnycdYQKd1EV/bWqSVlZTw+F03RAGtb5imX0aa8xENKxA7AAACvApgV6Vqx7Ew4VTnRlpre/2Mjbx8sZDHRsyiCXN4+kbG6wb8bw+2YI7etJURPjZJS7TnCihXhXUwnwuW66TG3xkY6k2ISbXWUSMU0nK7Tz443zSvpYgegEMDvASyI5noROwtmkbAGIx4dxGN22lVtLWFRWw+i52p4bE6f3+Lj7YP5RIHpfH9gunH9+jxuo9NvHNvic9eFlTG7tKAtMW05WffDYTdepkVInxs6lLcjRsTXt5TMRqLwYpeX6II9SikF4F4Ae4hodaLteZJD7cDgqbwC2NgFAPUAe1YDnX0rhQ0YAUxYBnz5JpBXAFQ3AHlFwOfbAOoF9t4NjLwR+PB3wOmTfOzAJmDzddxedWPfg04D2/8B2LYQyC8BRviArnWAcmGRuUPtoauaXbaBjwtJp74eePJJTgqZPh2YNg1QCnjiifCrdFlXBwsE+Lhe8WvNGl6Nb98+YPx4oKsL+OlPQ9tYudK5fb2y2NKlvJ0zx3hOKklY7AB8G4APwBVKqe19r6tdaNc7qAIWnRE+4O01wJEuXhrx3CtZNCrrgF1Lgfdbge88CVx4G5BfxIIFsPC9dz/Qe4yF8qxJumHgnfuA7o3AgFEA8vg8AFR9G9j3ODDqJ8DOFuCVm4FuyzewOwB0OnyLrYxbFLpMY3U9HxdSQn09MH8+cPQocOwYcMstkYXOSYj0udmzgU2beAnFjz8GZsxgAdSCp6+rq7N/Rnu7saSi7uOGDXzcjpUrQ4UwnJjGQsJiR0QvEpEioglEdFHf67nEu5ZjdK60F5NXbgY6lwM1q4CPn2cLb+/dLEKdy4GdS3iN2GE/YKEDeP87TwKXPwN848eAygN6j7JVVz4e+PxVYNhs4GszgK61gCoEju4HcNp49oGNQNWlwL5H2GqkvnZ1H7sDvF/p8C0WMo5AALjrLqCkBOjfH/i3fwtvQYUTIn2uqwtYtQr4j//g/VOngLFjgf/8T2DJEha6xYt5Xearrw59Xl1dqLDV1zuvZ6vXnNXtRBLTmHDyb5P58uSYndOY1sum9STMEVSnGRHmhGIdoGgt4cCFjtb+sdGI3j5UxON668HpKM9NMo3hIbg2ngQYspZExuxifU55uTGTQpdzKisz5sdagxzWairRPCMZhQDccGOFaNBjWC/OMay1yzYAF/+az3UH2IW9sIUtPFVg7L+9xrC4tLtYWQdsngn8aTqQVwh843/xWF1eEXDwJbbmqAcYNgeomAAUlAKVl7LVVz6e2yo+j61H3XZ1PTC6mccORzeHuqVCxtLeDsyda4zR6TG8H/zA2WUEYncb6+vZojt1CigoANau5Z+ffBJYsIDHDK++GrjhBmDmTN4HgNWrg9uM9IzmZmDZMt6Gc8VjwkkFk/nypGWnsbPWIqWfOEU2X25iq22Lz4jiHmjjVJMzx0uMXLwHC4k29Vl9mxpDVy7b2iSWnceINc9NJwrrdBTAmEer01/0rImiIr6+uZn3dcpKNM+QEk/ZjpObaE0s1lPArHNf7VJErOJp5y5vKGPx++9LiDaUc6rKekUUmMHHA9P5uHlOraSOeIZYxGXFCiOxuF8/owpKcbFRLMBc/knXttPFAqKdJyslnrKZePLQIk3tshNPu3u2NrGgPVRsWHpbm03jesXBY4d2z4qnf0LWEO3cVHNBgPJyYxnGoqLgmnYlJUR5eYbgRfuMRJOMRewygXiEIZxAhjvnZClubWILrrU/By7W5yc2tUsSiXOCWC07LWq6cnFjIwvgmDHGHFh9Li+PhTDSwvJuIWKXzUTr+upr9XGnMUDt9q4HC16i43MSwc1q7NzGaFbQ0yWgpkwxppBpq8y8Jm15OdHFFwdPM0t0/ms4ROyyFS1c5nG5aN1Eqwh1+tmqe6jIEDvt0iZqkcnk/6wlXGknp3Ezva+tN/NyiW1tfK9Z2EpLecwu3urDsRBO7BSfTy21tbXU0dGR8udmHd0BTi8BARfMB968C4ACvvNEdGkhO5dwGsmFLXx9YCpw+gRw1kRgxPU8KwNkJCsfao99xoNOPh7dzCky5iljQtaik3mbm3nGhDn5eOVKTjtZvtw4v3gx0NM3OaeuLjhdJBDg9BenRGI3UUq9SkS1dudcmBQpJBcCoPp+Vn37UWDO23t7DfDZNr5/hI/z+M6uYdF8v9UQuVhFSgudFrjq+uB9IWsx57q1tASLl57loAWwvj54364t13LlEkCSijOVzpXGXNgLbmELrXIyMGyuMbneae6qWYQmLAXGLQY+ehb4q38BLn3ASG4GgMm/jn/+qkz+z1mcCgQAsc93zRTEjc1UtGCNW8yzHM6q4fmso5qByf8RalWZ6VzJMyz08c6VPCODegxh6w7E57YKOY+5QEB9feh+JiNubDZSXc9Ct+1WYMQ8dj1HNXORgJ4jvO/kLmoB06JnFjSzyImrKdgQznLLdLELh4hdJkM9LHRda3nsbcJSFjq9H0msKuuCrT+zNSgIDtgFEjJl3C0RROwymco6YM+dRpChsIItOr2vgwJOmIsPSLRU8DgidpmKdUyusIJd2ppVfdWHo4x8miuZRGMNCkKOItHYTMUa6aQeFjpdaTjayKc1BcVaQBRwLiwabZViQcgCxLLLVKxRUruoaSQ3Nto8OBnbEzyAWHa5TLR5cE6FRcXlFXIIsexymVisQRnbE3IcsewEJpqxPUHIYkTshNDpZdqlFcETcggRO0HmuAqeQMbshPgivYKQZYhlJwiCJxCxEwTBE4jYCYLgCVwRO6XUfymlPlFK7XKjPUEQBLdxy7L7LYCrXGpLEATBdVwROyLaDOAzN9oSBEFIBikbs1NKNSmlOpRSHQcPHkzVYwVBEACkUOyI6DdEVEtEtVVVVal6rCAIAgCJxgqC4BFE7ARB8ARupZ48BOAvAC5QSu1XSv2tG+0KgiC4hStzY4nob9xoRxAEIVmIGysIgicQsRMEwROI2AmC4AlE7ARB8AQidoIgeAIRO0EQPIGInSAInkDEThAETyBiJwiCJxCxEwTBE4jYCYLgCUTsBEHwBCJ2giB4AhE7QRA8gYidIAieQMROEARPIGInCIInELETBMETiNgJguAJROwEQfAEInaCIHgCETtBEDyBiJ0gCJ5AxE4QBE8gYicIgicQsRMEwROI2AmC4AlcETul1FVKqTeVUnuVUr90o01BEAQ3SVjslFL5AP4dwFQA4wD8jVJqXKLtCoIguIkblt1kAHuJ6F0iOgmgFcC1LrQrCILgGm6I3dcA7DPt7+87JgiCkDG4IXbK5hiFXKRUk1KqQynVcfDgQRceKwiCED1uiN1+AENN+0MAfGS9iIh+Q0S1RFRbVVXlwmMFQRCixw2xawcwWik1UinVD8BcAL9zoV1BEATXKEi0ASLqUUr9HMDvAeQD+C8i2p1wzwRBEFwkYbEDACJ6DsBzbrQlCIKQDGQGhSAInkDEThAETyBiJwiCJxCxEwTBE4jYCYLgCUTsBEHwBCJ2giB4AhE7QRA8gYidIAieQMROEARPIGInCIInELETBMETiNgJguAJROwEQfAEInaCIHgCETtBEDyBiJ0gCJ5AxE4QBE8gYicIgicQsRMEwROI2AmC4AlE7ARB8AQidoIgeAIRO0EQPIGInSAInkDEThAETyBiJwiCJxCxEwTBEyQkdkqp2Uqp3Uqp00qpWrc6JQiC4DaJWna7AMwCsNmFvgiCICSNgkRuJqI9AKCUcqc3giAISSJlY3ZKqSalVIdSquPgwYOpeqwgCAKAKMROKbVJKbXL5nVtLA8iot8QUS0R1VZVVcXfY4+zciUQCAQfCwT4uCAIzkR0Y4noylR0RIiOujpgzhxgwwagvp6FTu8LguBMQmN2Quqpr2dhmzMHaG4G1qwxhE8QBGcSTT2ZqZTaD+BbAJ5VSv3enW4J4aivZ6Fbtoy3InSCEJmExI6IniCiIURURETVRPQ9tzomOBMIsEXX0sJb6xieIAihyAyKLMM8Rrd0qeHSiuAJQnhE7LKM9vbgMTo9htfent5+CUKmo4go5Q+tra2ljo6OlD9XcGblSo70msf/AgEW0UWL0tcvQYgFpdSrRGQ7dVUsOwGAkdKi3WHtLtfVpbdfguAWknoiAJCUFiH3EctOOIOktAi5jIidcAZJaRFcpXMl0B0wtkDwfmdq5ziK2GUg6Zj/KiktQlSYhUvjJFyVdcCLcwBVwNs9q4P3K1M7ICxilyGYBU4HC1avNo4nO1ggKS1CVGgBM1tqTsJ1qB0YtxjoXA4MngpsuxWoqAF2tgCXbQCqUztOIqknGYLZsqqvZ6G79VZg3jzg+eclWCBkEFrgRjcDb69xFi59XclQ4PNtQPl44PDrwAgf8I0f94mhu3lNknqSBZijoUuWAMuXs9CtXSvBAiEFxOKeVtez0O1axlsnC626ni27z7cDyGehq24EPnwK2DxT3FgvY46GTp3KFp01WCD17ISkEIt72h1gi+7CFt5aRRJgkdyzml3YAd8A0AsgH/jkT8DpXuD0KeD91iS+oVBE7JJIrMKko6E+H7BuHbB4cWiwQJJ/haRQXc/u6ItzgJ1LeDtkVuh1e1YDf7qGr52w1LjHKniVdTw2N3Q28FUXgHwAvQCdAsrOB5QCPtue/PdlQsQuicQiTOYxu08/BX7yE3ZlAwG2+BYvBu68M9TdNY/zRYNYhoIjZvd08FRgxFzgT9NZ4LoDwNabWcBG3sDjbfqeyzYY++a2JiwD9t4NnFMPtuzAkdjPtwEEoOaOVL47mUGRTGKZlWCNhs6ZwwKno6HLlxvViM3ubktLbON5UulYcES7pyN8QNc64KyLWLC23QrkFQL5/Xm/czkLnKa63n7cjnqAEfOArrVAXhEfO30CUPlAXn5K3lJwf4hS/po0aRJ5iZYWIoC30dLWRjRoEN8zaBDvR3Mu0bYFj3KgjejRQbwlIur0E61XRFt8RA/1I1oPoj9MCb4m2jY3NRC1lhA9VMTttJZw+7tXuP42AHSQg+6I2CWZRITFTiR1e7od6/6KFaHPaGvj45HadiLaNoUsZveKUBHb4jPE6Q9T+OctvujaM4vngTaih0uN+zeUEW0oj140Y0DELk1EEqZo7rWKpJ3wNDXxy3yf329cm6hlmMj7ELKUrU0scvq1oZxoUyMLVqc/8v1m8dzaxAKnrbkDbby/tcn1bovYpYl4LaJYxUWfb2rin/1+IqWIfD6isjJDCONp23qfuL4eQIvRQ8VEW5tZ6LTg/fclfcebDDE70GaI2O4VoVbi7hWhbqu+1mVE7LKMeESyrY2FraSEtz4f/3aLioLbMluB0bat+2N2fcWNzSHM4rR7BQtZp5/o5Sai1lKiPzaywL3cZAhhYDq7qZ3+4K12W81je9b9JCJi5xG0GBUVEfXvz1uALT2i+N3Ptjai8nIW0ZYW3paXi3WXM1jH18xjanrcblNj8PUbyoiem2gEMcxipi25RwcR7WgxxDAJlpyVcGIneXY5wMqVPJdWJySfOAEcOwZcdhng9/Mc2xtuiD0nzwwR54ECvKXUT6kWkoU5obg7AEABIOCd+zgFpboR6N7E+Xaa0z3A568BVZdxaomeNta5knPp9OT/Xcv6Jv8vSfn0MCsidhmGXdLvzTfzy4w5EbiggAVt8WLgzTeBfv34+JYtQE0NcOWVPMd26tT4qpi0twNPPgnccgvn9t1yC+9LRZQcwpxQfMEtwNeuZREbMQ9o+ANQs4rz7V66gee15hVwPt7BF3mrp41V1rHQDZ3NQlk+HujeyInIKa5yEoKTyZfMl7ixztgFEKxuo126id/P12nXdcYMouJifgFEjY0ctPBHEUjTmMcO9TN9PqLSUnFhcw7tyu5oYRf2oaJQ9/RMKkr/0LG6Tr+RP6dz9J4Zz9c/NVrG7AR77CKf0URDGxr4N+rz8TWNjbxfWcli6fcHtxdtVFjfZ92K4OUI4cbs9DktapsaOFgRmB4cgHi5iY+1lvLPOk3lwYLgtJMkI2KXhdgl/epjDQ2hQuP3s8WlxVBHY8eP523//obINTUFp6qYsYpgWxtHeLWAmi09icbmCNZorBY5nUaytZlF7EzeXHNwvp1TAvFDRYbQiWUn2NHWxsJlFhgdEW1oMCKjWnh0Xp12UfW+dl19vuBoqtVajJRzF890NyFHONBmuKd6/9FBfQJYYkRbzVbegwUsdjtagi1Duxw8fY9LVl/SxA7AnQDeALATwBMAKqK5T8TOGavrOH06C19pqSFwfj+PxZWVsfgVFQWnl5SVEQ0dyteYXU89nmedfhbOcpNkYiFoPM8sbDtaDFHTvNzELrD5WrOYJTkHL5li910ABX0/rwCwIpr7ROycsQYFysrYOsvPN1zQsjKi5maiUaP4N5ifz6JIxOfLy4kuvthIKG5r4/MA0cSJoaKlXV6fz3iu3dicTBPzMFZhsxPAaIXMSTxdICVuLICZANZHc62IXfRoF1KLUVkZUWGhYdlpoQKIampCAwmlpaGRWL+frTmzK1tTY7i8WtDimW0h5CBWcbKOwem5r+GmkFmxswpdIFVi9zSAeWHONwHoANAxbNgwV99grmJ2Ifv149/WlCnB6SSDBrGVpwVvypRg60uLYWNjcJt+vxGo0KKn3VyfT6w4oQ+zdaZnRqzPIwrMMM5vbeII7eNDQ+/RmMfq9PktvuDAhwskJHYANgHYZfO61nTNbX1jdipSeySWXVSYxUYHJwoKDFdUp5VMmcLnSkuJRoywd0d9vlCrjSjUZS4vZ8ErLAwOgAgexk6kAjPYKtvabAQr1iuiBwtDc/PMFl5rqXGPtg6tkd4ESaplB+BGAH8BUBLtPSJ2zmgB0ls9bjdtGovRxIn8WystZaED2OrTrqsWtuZmewtPC6EZs7Bqt1m7uYIQxJmCnH15dM+MZ6Hr9BtJx39sDL5WR2I7/cY8W2tCcgqisQlNF1NKXQXgHwDMIKKjibQlMLps+jvv8H5rK9DbC7zwAq85UVsLlJYCJ08CO3cCEyfyz0uW8LzXBx4AVq0C7rmHp4/p0uvPP8/zZh97LHQ6mi4JD/D82pYWnoLWmtrFn4RMxbzMop5W1r0RKCzn5RGrLgPOrgE+fh44txE4sBF4vpbn2upFslVBX5l2H99bNtYo7z52gevrx9ripILRvADsBbAPwPa+193R3CeWXXi0S9m/P2+bmgzLbfJkttr0cSKiSy4xorXmNuyKdzqNxdldV1ISOr1MAhQewpxgrF3TTj8nCz9YyFbaY+f2TSErNVzWx4bwsSdHBufkaUsu1qrHMYBkWXZENIqIhhLRRX2vnySovQLYGrvlFq5ccvIkUF1tLLhzxx3A/fezJffrX7OVtncvFwUwT8yvrwcWLQpdyEcvAmSdxG933bJl/BxZttGj6LVkAbbA/nwNsG0hAOIlEUc1A73HAOQDvV8Bn20DjnQBx/cDhWcBX70HFAzkFcZG3siW3LjFwBd7jEV9zJVUkoxiMUwttbW11NHRkfLnZgtaVJqbuUTT0aPsgj7wgHH+uutYdHbsiL9sU6x9Cbc6mpCjdAd4ndihs3hRazrFi16f+11eD/bcK4Ev3wTeWwf0qwCOfQyUjQG+eAMoqgJOfAKcNQkYPsco/aSXXjzSBbx3P3D5M+wedwf4eAIurVLqVSKqtTsnJZ4yDPPSht3dfKyoiBfNXr2az7e2Aj09wB//yCJkFh+314U1L9tofZbgAarrWei61gIqD7iwBTjxKfD+eha6zuXA8LnA2IXAsY9Y0I68B5w1kYWudCTw+assbAc2sdBV17PVuO8RXprxUHufqE7n+810B3jM0AVE7FJINEJkDha0tgKFhcC//iswbRqwcCHXpFu/ngMILS1sbZnbtFuYe/p0vj7cc50IBIyghfVZggfoDgAfPsXrvp4+waIFAqA4KHHZBmDzdcAeP68rq/JZ6D5/lYt+9nwJnDcD2LuGxVHXtNMFQzuXAz1H2F3Wa9LqYEh3gI+7VfTTaTAvmS+vBihiWezGnHqiiwLopN/+/WNbPSzeaV/m63TNPKl84iHOTPpvCi7RvsVnyZ8rMWZD6PSSwAwjcXi94iBFNDMpEpxKBql6kjnEM7HevHhOQ0NwUQDdZqR1YeN5rl3xznAiK+QYjrMeSkKnimlx0ov17F5hCNkWn73QxVJgIEpE7DKMWEommWc2mJdHDLfgjZOwJVqqSbfb0BA6w0KsvBzGaYJ/p59TTqzln/TKZOEstHBtimWXG8RiYelrdZFN8ywIJ3FxcpW1C5poqSa7GRZi5eU4TjXo2qaGFgXQeXi60rG+NtxcWY0WzwTKP4nYZQixjNkROa8BEW4ql92as7r6SaLiZBZqbV1KnTshxB01Vz8xX2N2Ze3EbmsTW4Th7ouAiF0asBOdeEsmxSqS0fQlVrfTrg/9+xuWZiJtCzlArONsSSriKWKXBhIVKDNuiFWiWPugxxJ1HbxEF+IWsph4I6hJKOIpYpcm4omAZgNWQdNrXlhLSAkeIFELzeUinuHETpKKk0iuzj6wzqNdsACYN48X4s6l9ylEwaF2Y1YEYCQLH7JMvjZXTtHsWc3JyBe2GItsJxMnFUzmSyy73MIr79NzuLkSmNXi0wtp2y3HmAAQNzb1uDlml04ijRfmyvvMCpK8DGEIbgcRzGN05vw88/kE30s4sRM3NklEW1op07Gba2su85Qr7zMr0CWXkjV31Ip2SV+cA+xcwluzyxpPe6ObgV3LuGDn2AWh55NZxNNJBZP58oJll0uIm5pBJHEZQkfcCiKkoO8Qy05IhFwNtGQlZutodHP8Vla0dAc4eGAXRLALOjiVZNJW6GUbgAlLDYsx2UEJEyJ2QkSkzFMGEU58kvGscAIVya02i6GO2urjTlHbZOJk8iXzlXFubKoHfrMICUBkEEmadeBINH8X4VzTVPeXxI2NTKoHfrMICUBkENHmtLnFuEWhbrI1iBDOrXY7wJEgsgaFRgvc6GZ2D9L4SxGErCGav5udS1gML2xhdziJyBoU0WD+DzV4avAvzMU6+IKQM0QTdEjlGGMEvC125gFU/UvpV8mLi+xZzef3rOaFQPY9ZlznsvC5vUiOIKSESG51BkRgzXhb7PRY3Z7Vxurlp77gc9sWAh9v4m3vUeDUl8FjeXtWA4GrXelGpMRdQchIIo3ppXqMMQLeHrPrXMlLt+1cApRdABx5Bxj+Q17UF3afSx7QsIkXA952K3DeNODyp13piqzPKgiJI2N2TlTW8dJtQ2cBn78GnDoCvHsvUDYu+Lq8kr4fTgM7b2ehy+8fOt0lASRxVxCSi7fFrrqeXdeutUD5eAC9wOmTwBe7g687fRRnPqqDLwBQQMkwoKvVtfE7SdwVhOSSkNgppZYppXYqpbYrpf6glDrPrY6lhO4AW3bnNgKHX+ctlMPFp4N//vIN4IOH2Q1OUPC0C7thA7B0KW/NY3iCICROopbdnUQ0gYguAvAMgCWJdymFvNIMVF4KHHwJGDAaOLAR9mN1DpR9E9jZwu5wAlFaSdwVhOSTkNgR0Rem3VLEpBQZQPUVwEe/Ayr+Cjj+Uez3H3oJmLCMf35xTtxW3qJFoWN09fV8XBAEd0h4zE4p9S9KqX0ArkcYy04p1aSU6lBKdRw8eDDRx7rDgBHAeTNYtCjOj6JrvZG20rlcppgJQoYSMfVEKbUJwLk2p24joqdM1y0GUExEt0d6aMaknmie+jrw1XsA8gH0GscLBwGnPo18f9UU4Is9MsVMENJMuNSTgkg3E9GVUT7nQQDPAogodhnFntUsdIUVwKn/CT4XjdBBcYR2hE+EThAymESjsaNNuzMAvJFYd1LMntV9ycEzgFOHcebjKCiP7v68YqCgBDirBuhax+0JgpCRJDpmd4dSapdSaieA7wKY70KfUseBTcConwDdm3g2RMMmjs72HAby+kfXxvDrgamvATWrODKbxonOgiA4k2g09vtEdGFf+sk1RPShWx1LCfXPcZDi8meMaV9H3gKqG4HTx0KvV4VAXhFQfB74ozsNjJjL58Yu4HbSNO9PEITweHsGBRA8mflQO0dVP9vKwgYAA87vu1ABdAr4+k3ArA/ZCswvBt5vNdpK9upIgiDEjYidGT1Xtuo7gMrnsbwjbwOjmtmiKxsDvHc/u6rV9cB3ngQGfCPdvRYEIQoiRmM9hS5Jc6id3dJD7UD1XwPUwy7voXYWxEPtLHb6JQhCxuPtEk+CIOQUUuJJEATPI2InCIInELETBMETiNgJguAJROwEQfAEInaCIHgCETtBEDyBiJ0gCJ4gLUnFSqmDAN63HB4EIJoCculC+pcY0r/4yeS+AZnVv+FEVGV3Ii1iZ4dSqsMp8zkTkP4lhvQvfjK5b0Dm908jbqwgCJ5AxE4QBE+QSWL3m3R3IALSv8SQ/sVPJvcNyPz+AcigMTtBEIRkkkmWnSAIQtIQsRMEwRNkpNgppW5VSpFSalC6+2JGKbVMKbVTKbVdKfUHpdR56e6TGaXUnUqpN/r6+IRSqiLdfdIopWYrpXYrpU4rpTImTUEpdZVS6k2l1F6l1C/T3R8zSqn/Ukp9opTale6+2KGUGqqUCiil9vT9bjN6dcGMEzul1FAAjQA+SHdfbLizbyW1iwA8A2BJmvtjZSOAC4loAoC3ACxOc3/M7AIwC8DmdHdEo5TKB/DvAKYCGAfgb5RS49LbqyB+C+CqdHciDD0AFhLRWACXAPhZhn1+QWSc2AH4vwAWAci4yAkRfWHaLUWG9ZGI/kBEPX27LwMYks7+mCGiPUT0Zrr7YWEygL1E9C4RnQTQCuDaNPfpDES0GcBn6e6HE0T0MRG91vfzlwD2APhaenvlTEYtuKOUmgHgQyLaoZRKd3dsUUr9C4AbABwGkMmr7dwE4OF0dyLD+RqAfab9/QAuTlNfshql1AgANQC2prkrjqRc7JRSmwCca3PqNgD/B8B3U9ujYML1j4ieIqLbANymlFoM4OcAbs+k/vVdcxvYxVifaX3LMOz+o2aUtZ4NKKUGAHgMwP+2eD8ZRcrFjoiutDuulBoPYCQAbdUNAfCaUmoyER1Id/9seBDAs0ix2EXqn1LqRgDTATRQipMoY/jsMoX9AIaa9ocA+ChNfclKlFKFYKFbT0SPp7s/4cgYN5aIXgdwjt5XSnUBqCWiTKmmAKXUaCJ6u293BoA30tkfK0qpqwD8A4C/JqKj6e5PFtAOYLRSaiSADwHMBfDD9HYpe1BsldwLYA8RrU53fyKRiQGKTOYOpdQupdROsLudaaH2XwEYCGBjX3rM3enukEYpNVMptR/AtwA8q5T6fbr71BfM+TmA34MH1zcQ0e709spAKfUQgL8AuEAptV8p9bfp7pOFbwPwAbii7/u2XSl1dbo75YRMFxMEwROIZScIgicQsRMEwROI2AmC4AlE7ARB8AQidoIgeAIRO0EQPIGInSAInuD/A3X+eH6/HZETAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "\n", "x1 = np.random.multivariate_normal([2,2], [[0.1,0],[0,0.1]], 50)\n", "x2 = np.random.multivariate_normal([-2,-2], [[0.1,0],[0,0.1]], 50)\n", "x3 = np.random.multivariate_normal([-3,3], [[0.1,0.1],[0,0.1]], 50)\n", "X1 = np.concatenate((x1,x2,x3), axis=0)\n", "\n", "y1 = np.random.multivariate_normal([-2,2], [[0.1,0],[0,0.1]], 50)\n", "y2 = np.random.multivariate_normal([2,-2], [[0.1,0],[0,0.1]], 50)\n", "y3 = np.random.multivariate_normal([-3,-3], [[0.01,0],[0,0.01]], 50)\n", "X2 = np.concatenate((y1,y2,y3), axis=0)\n", "\n", "plt.plot(X1[:,0],X1[:,1], 'x', color='blue', label='class 1')\n", "plt.plot(X2[:,0], X2[:,1], 'x', color='orange', label='class 2')\n", "\n", "\n", "plt.legend(loc=(0.4, 0.8), fontsize=12)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** What do you expect the decision boudaries to look like ? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Question:__ Fill-in the following code to train a decision tree on this toy data and visualize it. \n", "\n", "Change the splitter to random, meaning that the algorithm will consider the feature along which to split _randomly_ (rather than picking the optimal one), and then select the best among several _random_ splitting point. Run the algorithm several times. What do you observer?" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Training data\n", "X_demo = np.concatenate((X1, X2), axis=0)\n", "y_demo = np.concatenate((np.zeros(X1.shape[0]), np.ones(X2.shape[0])))\n", "\n", "# Train a DecisionTreeClassifier on the training data\n", "clf = DecisionTreeClassifier(splitter='random')\n", "clf.fit(X_demo, y_demo)\n", "\n", "# Create a mesh, i.e. a fine grid of values between the minimum and maximum\n", "# values of x1 and x2 in the training data\n", "plot_step = 0.02\n", "x_min, x_max = X_demo[:, 0].min() - 1, X_demo[:, 0].max() + 1\n", "y_min, y_max = X_demo[:, 1].min() - 1, X_demo[:, 1].max() + 1\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),\n", " np.arange(y_min, y_max, plot_step))\n", "\n", "# Label each point of the mesh with the trained DecisionTreeClassifier\n", "Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", "Z = Z.reshape(xx.shape)\n", "\n", "# Plot the contours corresponding to these labels \n", "# (i.e. the decision boundary of the DecisionTreeClassifier)\n", "cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)\n", "\n", "# Plot the training data \n", "plt.plot(X1[:,0], X1[:,1], 'x', label='class 1')\n", "plt.plot(X2[:,0], X2[:,1], 'x', label='class 2')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.2 Tumor classification data\n", "\n", "Let us now go back to our tumor classification problem.\n", "\n", "**Question:** Cross-validate 5 different decision trees (with default parameters) and print out their accuracy. Why do you get different values? Check the documentation for help." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(183, 3000)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.590\n", "0.585\n", "0.617\n", "0.612\n", "0.574\n" ] } ], "source": [ "from sklearn import tree\n", "from sklearn import metrics\n", "\n", "ypred_dt = [] # will hold the 5 arrays of predictions (1 per tree)\n", "for tree_index in range(5):\n", " # Initialize a DecisionTreeClassifier\n", " clf = DecisionTreeClassifier()\n", " \n", " # Cross-validate this DecisionTreeClassifier on the toy data\n", " pred_proba = cross_validate_clf(X, y, clf, folds)\n", " \n", " # Append the prediction to ypred_dt \n", " ypred_dt.append(pred_proba)\n", " \n", " # Print the accuracy of DecisionTreeClassifier\n", " print(\"%.3f\" % metrics.accuracy_score(y, np.where(pred_proba > 0.5, 1, 0)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** Compute the mean and standard deviation of the area under the ROC curve of these 5 trees. Plot the ROC curves of these 5 trees.\n", "\n", "Use the [metrics](http://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics) module of scikit-learn." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fpr_dt = [] # will hold the 5 arrays of false positive rates (1 per tree)\n", "tpr_dt = [] # will hold the 5 arrays of true positive rates (1 per tree)\n", "auc_dt = [] # will hold the 5 areas under the ROC curve (1 per tree)\n", "\n", "for tree_index in range(5):\n", " # Compute the ROC curve of the current tree\n", " fpr_dt_tmp, tpr_dt_tmp, thresholds = metrics.roc_curve(y, ypred_dt[tree_index] , pos_label=1)\n", " \n", " # Compute the area under the ROC curve of the current tree\n", " auc_dt_tmp = metrics.auc(fpr_dt_tmp, tpr_dt_tmp)\n", " fpr_dt.append(fpr_dt_tmp)\n", " tpr_dt.append(tpr_dt_tmp)\n", " auc_dt.append(auc_dt_tmp)\n", "\n", "# Plot the first 4 ROC curves\n", "for tree_index in range(4):\n", " plt.plot(fpr_dt[tree_index], tpr_dt[tree_index], color='blue', \n", " label='No regularization: AUC = %0.3f' % auc_dt[tree_index])\n", " \n", "# Plot the last ROC curve, with a label that gives the mean/std AUC\n", "plt.plot(fpr_dt[-1], tpr_dt[-1], '-', \n", " label='DT (AUC = %0.2f +/- %0.2f)' % (np.mean(auc_dt), np.std(auc_dt)))\n", "\n", "# Plot the ROC curve\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curves', fontsize=16)\n", "plt.legend(loc=\"lower right\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** What parameters of DecisionTreeClassifier can you play with to define trees differently than with the default parameters? Cross-validate these using a grid search with [model_selection.GridSearchCV](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html). Plot the optimal decision tree on the previous plot. Did you manage to improve performance?" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'criterion': 'gini', 'max_depth': 2, 'min_samples_leaf': 2, 'min_samples_split': 2}\n", "{'criterion': 'gini', 'max_depth': 2, 'min_samples_leaf': 2, 'min_samples_split': 2}\n", "{'criterion': 'entropy', 'max_depth': 5, 'min_samples_leaf': 2, 'min_samples_split': 2}\n", "{'criterion': 'gini', 'max_depth': 2, 'min_samples_leaf': 2, 'min_samples_split': 2}\n", "{'criterion': 'entropy', 'max_depth': 2, 'min_samples_leaf': 2, 'min_samples_split': 2}\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn import model_selection\n", "\n", "# Define the grid of parameters to test\n", "param_grid = {\n", " \"criterion\": ['gini', 'entropy'],\n", " \"max_depth\": [2, 5],\n", " \"min_samples_split\": [2],\n", " \"min_samples_leaf\":[2]\n", " }\n", " \n", "classifier = DecisionTreeClassifier()\n", "# Initialize a GridSearchCV object that will be used to cross-validate\n", "# a DecisionTreeClassifier with these parameters.\n", "# What scoring function do you want to use?\n", "clf = model_selection.GridSearchCV(classifier, param_grid, cv=3, scoring='roc_auc')\n", "\n", "# Cross-validate the GridSearchCV object \n", "ypred_dt_opt = cross_validate_clf_optimize(X, y, clf, folds)\n", "\n", "# Compute the ROC curve for the optimized DecisionTreeClassifier\n", "fpr_dt_opt, tpr_dt_opt, thresholds = metrics.roc_curve(y, ypred_dt_opt, pos_label=1)\n", "auc_dt_opt = metrics.auc(fpr_dt_opt, tpr_dt_opt)\n", "\n", "# Plot the ROC curves of the 5 decision trees from earlier\n", "fig = plt.figure(figsize=(5, 5))\n", "\n", "for tree_index in range(4):\n", " plt.plot(fpr_dt[tree_index], tpr_dt[tree_index], '-', color='blue') \n", "plt.plot(fpr_dt[-1], tpr_dt[-1], '-', color='blue', \n", " label='DT (AUC = %0.2f (+/- %0.2f))' % (np.mean(auc_dt), np.std(auc_dt)))\n", "\n", "# Plot the ROC curve of the optimized DecisionTreeClassifier\n", "plt.plot(fpr_dt_opt, tpr_dt_opt, color='orange', label='DT optimized (AUC=%0.2f)' % auc_dt_opt)\n", "\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curves', fontsize=16)\n", "plt.legend(loc=\"lower right\", fontsize=12)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.2 Bagging trees" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will resort to ensemble methods to try to improve the performance of single decision trees. Let us start with _bagging trees_: The different trees are to be built using a _bootstrap sample_ of the data, that is to say, a sample built by randomly drawing n points _with replacement_ from the original data, where n is the number of points in the training set.\n", "\n", "Bagging is efficient when used with low bias and high variance weak learners. Indeed, by averaging such estimators, we lower the variance by obtaining a smoother estimator, which is still centered around the true density (low bias). \n", "\n", "Bagging decision trees hence makes sense, as decision trees have:\n", "* low bias: intuitively, the conditions that are checked become multiplicative so the tree is continuously narrowing down on the data (the tree becomes highly tuned to the data present in the training set).\n", "* high variance: decision trees are very sensitive to where it splits and how it splits. Therefore, even small changes in input variable values might result in very different tree structure.\n", "\n", "\n", "**Note**: Bagging trees and random forests start being really powerful when using large number of trees (several hundreds). This is computationally more intensive, especially when the number of features is large, as in this lab. For the sake of computational time, we suggeste using small numbers of trees, but you might want to repeat this lab for larger number of trees at home." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question** Cross-validate a bagging ensemble of 5 decision trees on the data. Plot the resulting ROC curve, compared to the 5 decision trees you trained earlier.\n", "\n", "Use [ensemble.BaggingClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.html)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn import ensemble\n", "\n", "# Initialize a bag of trees\n", "clf = ensemble.BaggingClassifier(n_estimators=5)\n", "\n", "# Cross-validate the bagging trees on the tumor data\n", "ypred_bt = cross_validate_clf(X, y, clf, folds)\n", "\n", "# Compute the ROC curve of the bagging trees\n", "fpr_bt, tpr_bt, thresholds = metrics.roc_curve(y, ypred_bt, pos_label=1)\n", "auc_bt = metrics.auc(fpr_bt, tpr_bt)\n", "\n", "# Plot the ROC curve of the 5 decision trees from earlier\n", "fig = plt.figure(figsize=(5, 5))\n", "\n", "for tree_index in range(4):\n", " plt.plot(fpr_dt[tree_index], tpr_dt[tree_index], '-', color='blue') \n", "plt.plot(fpr_dt[-1], tpr_dt[-1], '-', color='blue', \n", " label='DT (AUC = %0.2f (+/- %0.2f))' % (np.mean(auc_dt), np.std(auc_dt)))\n", "\n", "# Plot the ROC curve of the bagging trees\n", "plt.plot(fpr_bt, tpr_bt, color='orange', label='BT (AUC=%0.2f)' % auc_bt)\n", "\n", "\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curves', fontsize=16)\n", "plt.legend(loc=\"lower right\", fontsize=12)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Question:__ How do the bagging trees perform compared to individual trees?\n", " \n", "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question** Use cross_validate_optimize to optimize the number of decision trees to use in the bagging method. How many trees did you find to be an optimal choice?" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Number of trees to use\n", "list_n_trees = [5, 10, 20, 50, 80]\n", "\n", "# Start a ROC curve plot\n", "fig = plt.figure(figsize=(5, 5))\n", " \n", "for idx, n_trees in enumerate(list_n_trees):\n", " # Initialize a bag of trees with n_trees trees\n", " clf = ensemble.BaggingClassifier(n_estimators=n_trees)\n", " \n", " # Cross-validate the bagging trees on the tumor data\n", " ypred_bt_tmp = cross_validate_clf(X, y, clf, folds)\n", " \n", " # Compute the ROC curve \n", " fpr_bt_tmp, tpr_bt_tmp, thresholds = metrics.roc_curve(y, ypred_bt_tmp, pos_label=1)\n", " auc_bt_tmp = metrics.auc(fpr_bt_tmp, tpr_bt_tmp)\n", "\n", " # Plot the ROC curve\n", " plt.plot(fpr_bt_tmp, tpr_bt_tmp, '-', \n", " label='BT %0.f trees (AUC = %0.2f)' % (n_trees, auc_bt_tmp)) #corr tmp\n", "\n", "# Plot the ROC curve of the optimal decision tree\n", "plt.plot(fpr_dt_opt, tpr_dt_opt, label='DT optimized (AUC=%0.2f)' % auc_dt_opt)\n", "\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curves', fontsize=16)\n", "plt.legend(loc=\"lower right\", fontsize=12)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "fpr_bt_opt = fpr_bt_tmp\n", "tpr_bt_opt = tpr_bt_tmp\n", "auc_bt_opt = auc_dt_tmp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Random Forest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In practice, simply bagging is typically not enough. In order to get a good reduction in variance, we require that the models being aggregated be uncorrelated, so that they make “different errors”. Bagging will usually get you highly correlated models that will make the same errors, and will therefore not reduce the variance of the combined predictor.\n", "\n", "**Question** What is the difference between bagging trees and random forests? How does it intuitively fix the problem of correlations between trees ? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question** Cross-validate a random forest of 5 decision trees on the data. Plot the resulting ROC curve, compared to the bagging tree made of 5 decision trees.\n", "\n", "Use [ensemble.RandomForestClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initialize a random forest with 5 trees\n", "clf = ensemble.RandomForestClassifier(n_estimators=5)\n", "\n", "# Cross-validate the random forest on the tumor data\n", "ypred_rf = cross_validate_clf(X, y, clf, folds)\n", "\n", "# Compute the ROC curve of the random forest\n", "fpr_rf, tpr_rf, thresholds = metrics.roc_curve(y, ypred_rf, pos_label=1)\n", "auc_rf = metrics.auc(fpr_rf, tpr_rf)\n", "\n", "# Plot the ROC curve of the 5 decision trees from earlier\n", "fig = plt.figure(figsize=(5, 5))\n", "\n", "for tree_index in range(4):\n", " plt.plot(fpr_dt[tree_index], tpr_dt[tree_index], '-', color='grey') \n", "plt.plot(fpr_dt[-1], tpr_dt[-1], '-', color='grey', \n", " label='DT (AUC = %0.2f (+/- %0.2f))' % (np.mean(auc_dt), np.std(auc_dt)))\n", "\n", "# Plot the ROC curve of the bagging trees (5 trees)\n", "plt.plot(fpr_bt, tpr_bt, label='BT (AUC=%0.2f)' % auc_bt)\n", "\n", "# Plot the ROC curve of the random forest (5 trees)\n", "#### Correction\n", "plt.plot(fpr_rf, tpr_rf, label='RF (AUC=%0.2f)' % auc_rf)\n", "\n", "\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curves', fontsize=16)\n", "plt.legend(loc=\"lower right\", fontsize=12)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question** What are the main parameters of Random Forest which can be optimized ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question** Use cross_validate_clf_optimize to optimize \n", "* the number of decision trees \n", "* the number of features to consider at each split.\n", "\n", "How many trees do you find to be an optimal choice? How does the optimal random forest compare to the optimal bagging trees? How do the training times of the random forest and the bagging trees compare?" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'max_features': 50, 'n_estimators': 20}\n", "{'max_features': 50, 'n_estimators': 20}\n", "{'max_features': 10, 'n_estimators': 5}\n", "{'max_features': 10, 'n_estimators': 20}\n", "{'max_features': 100, 'n_estimators': 20}\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Define the grid of parameters to test\n", "param_grid = {\n", " \"n_estimators\": [5,10,20],\n", " \"max_features\": [10, 50, 100]\n", " }\n", "\n", "# Initialize a GridSearchCV object that will be used to cross-validate\n", "# a random forest with these parameters.\n", "# What scoring function do you want to use?\n", "classifier = ensemble.RandomForestClassifier()\n", "clf = model_selection.GridSearchCV(classifier, param_grid, cv=3, scoring='roc_auc')\n", "\n", "# Cross-validate the GridSearchCV object \n", "ypred_rf_opt = cross_validate_clf_optimize(X, y, clf, folds)\n", "\n", "# Compute the ROC curve for the optimized random forest\n", "fpr_rf_opt, tpr_rf_opt, thresholds = metrics.roc_curve(y, ypred_rf_opt, pos_label=1)\n", "auc_rf_opt = metrics.auc(fpr_rf_opt, tpr_rf_opt)\n", "\n", "# Plot the ROC curve of the optimized DecisionTreeClassifier\n", "fig = plt.figure(figsize=(5, 5))\n", "\n", "plt.plot(fpr_dt_opt, tpr_dt_opt, color='grey', \n", " label='DT optimized (AUC=%0.2f)' % auc_dt_opt)\n", " \n", "# Plot the ROC curve of the optimized random forest\n", "plt.plot(fpr_bt_opt, tpr_bt_opt, \n", " label='BT optimized (AUC=%0.2f)' % auc_bt_opt)\n", "\n", "# Plot the ROC curve of the optimized bagging trees\n", "plt.plot(fpr_rf_opt, tpr_rf_opt,\n", " label='RF optimized (AUC = %0.2f' % (auc_rf_opt))\n", " \n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curves', fontsize=16)\n", "plt.legend(loc=\"lower right\", fontsize=12)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question** How do your tree-based classifiers compare to regularized logistic regression models? \n", "Plot the corresponding ROC curves." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'C': 100.0}\n", "{'C': 100.0}\n", "{'C': 1000.0}\n", "{'C': 1000.0}\n", "{'C': 100.0}\n", "nb features of best sparse model: 2464\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'C': 1.0}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'C': 0.001}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'C': 1.0}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'C': 100.0}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n", "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'C': 0.1}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n" ] } ], "source": [ "from sklearn import linear_model\n", "\n", "# Evaluate an optimized l1-regularized logistic regression\n", "param_grid = {'C': np.logspace(-3, 3, 7)}\n", "clf = model_selection.GridSearchCV(linear_model.LogisticRegression(penalty='l1', solver='liblinear'), \n", " param_grid, scoring='roc_auc')\n", "ypred_l1 = cross_validate_clf_optimize(X, y, clf, folds)\n", "fpr_l1, tpr_l1, thresholds_l1 = metrics.roc_curve(y, ypred_l1, pos_label=1)\n", "auc_l1 = metrics.auc(fpr_l1, tpr_l1)\n", "print('nb features of best sparse model:', len(np.where(clf.best_estimator_.coef_!=0)[0]))\n", "\n", "# Evaluate an optimized l2-regularized logistic regression\n", "clf = model_selection.GridSearchCV(linear_model.LogisticRegression(penalty='l2'), \n", " param_grid, scoring='roc_auc')\n", "ypred_l2 = cross_validate_clf_optimize(X, y, clf, folds)\n", "fpr_l2, tpr_l2, thresholds_l2 = metrics.roc_curve(y, ypred_l2, pos_label=1)\n", "auc_l2 = metrics.auc(fpr_l2, tpr_l2)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the ROC curves\n", "fig = plt.figure(figsize=(5, 5))\n", "\n", "plt.plot(fpr_rf_opt, tpr_rf_opt, \n", " label='RF optimized (AUC = %0.2f)' % (auc_rf_opt))\n", "plt.plot(fpr_bt_opt, tpr_bt_opt, \n", " label='BT optimized (AUC = %0.2f)' % (auc_bt_opt))\n", "plt.plot(fpr_l1, tpr_l1, \n", " label='l1 optimized (AUC = %0.2f)' % (auc_l1))\n", "plt.plot(fpr_l2, tpr_l2, \n", " label='l2 optimized (AUC = %0.2f)' % (auc_l2))\n", "\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curves', fontsize=16)\n", "plt.legend(loc=\"lower right\", fontsize=12)" ] }, { "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.13" } }, "nbformat": 4, "nbformat_minor": 2 }