diff --git a/notebooks/03_ml_basics_ex_1_magic.ipynb b/notebooks/03_ml_basics_ex_1_magic.ipynb new file mode 100644 index 0000000..110f395 --- /dev/null +++ b/notebooks/03_ml_basics_ex_1_magic.ipynb @@ -0,0 +1,228 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercise: Classification of air showers measured with the MAGIC telescope\n", + "\n", + "The [MAGIC telescope](https://en.wikipedia.org/wiki/MAGIC_(telescope)) is a Cherenkov telescope situated on La Palma, one of the Canary Islands. The [MAGIC machine learning dataset](https://archive.ics.uci.edu/ml/datasets/magic+gamma+telescope) can be obtained from [UC Irvine Machine Learning Repository](https://archive.ics.uci.edu/ml/index.php).\n", + "\n", + "The task is to separate signal events (gamma showers) and background events (hadron showers) based on the features of a measured Cherenkov shower.\n", + "\n", + "The features of a shower are:\n", + "\n", + " 1. fLength: continuous # major axis of ellipse [mm]\n", + " 2. fWidth: continuous # minor axis of ellipse [mm] \n", + " 3. fSize: continuous # 10-log of sum of content of all pixels [in #phot]\n", + " 4. fConc: continuous # ratio of sum of two highest pixels over fSize [ratio]\n", + " 5. fConc1: continuous # ratio of highest pixel over fSize [ratio]\n", + " 6. fAsym: continuous # distance from highest pixel to center, projected onto major axis [mm]\n", + " 7. fM3Long: continuous # 3rd root of third moment along major axis [mm] \n", + " 8. fM3Trans: continuous # 3rd root of third moment along minor axis [mm]\n", + " 9. fAlpha: continuous # angle of major axis with vector to origin [deg]\n", + " 10. fDist: continuous # distance from origin to center of ellipse [mm]\n", + " 11. class: g,h # gamma (signal), hadron (background)\n", + "\n", + "g = gamma (signal): 12332\n", + "h = hadron (background): 6688\n", + "\n", + "For technical reasons, the number of h events is underestimated.\n", + "In the real data, the h class represents the majority of the events.\n", + "\n", + "You can find further information about the MAGIC telescope and the data discrimination studies in the following [paper](https://reader.elsevier.com/reader/sd/pii/S0168900203025051?token=8A02764E2448BDC5E4DD0ED53A301295162A6E9C8F223378E8CF80B187DBFD98BD3B642AB83886944002206EB1688FF4) (R. K. Bock et al., \"Methods for multidimensional event classification: a case studyusing images from a Cherenkov gamma-ray telescope\" NIM A 516 (2004) 511-528) (You need to be within the university network to get free access.) " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "filename = \"https://www.physi.uni-heidelberg.de/~reygers/lectures/2021/ml/data/magic04_data.txt\"\n", + "df = pd.read_csv(filename, engine='python')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use categories 1 and 0 insted of \"g\" and \"h\"\n", + "df['class'] = df['class'].map({'g': 1, 'h': 0})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### a) Create for each variable a figure with a plot for gammas and hadrons overlayed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df0 = df[df['class'] == 0] # hadron data set\n", + "df1 = df[df['class'] == 1] # gamma data set\n", + "\n", + "print(len(df0),len(df1))\n", + "\n", + "### YOUR CODE ###\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### b) Create training and test data set. The tast data should amount to 50\\% of the total data set." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "y = df['class'].values\n", + "X = df[[col for col in df.columns if col!=\"class\"]]\n", + "\n", + "### YOUR CODE ### \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### c) Define the logistic regressor and fit the training data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import linear_model\n", + "\n", + "# define logistic regressor\n", + "\n", + "### YOUR CODE ###\n", + "\n", + "\n", + "\n", + "# fit training data\n", + "\n", + "### YOUR CODE ###\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### d) Determine the Model Accuracy, the AUC score and the Run time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import roc_auc_score\n", + "\n", + "### YOUR CODE ###\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### e) Plot the ROC curve (Backgropund Rejection vs signal efficiency)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "from sklearn.metrics import roc_curve\n", + "%matplotlib inline\n", + "\n", + "y_pred_prob = logreg.predict_proba(X_test) # predicted probabilities\n", + "\n", + "### YOUR CODE ###\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### YOUR CODE ###\n", + "\n" + ] + } + ], + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/03_ml_basics_iris_softmax_regression.ipynb b/notebooks/03_ml_basics_iris_softmax_regression.ipynb new file mode 100644 index 0000000..f8240af --- /dev/null +++ b/notebooks/03_ml_basics_iris_softmax_regression.ipynb @@ -0,0 +1,383 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simple classification example: the iris dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import classification_report\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.metrics import confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# import some data to play with\n", + "# columns: Sepal Length, Sepal Width, Petal Length and Petal Width\n", + "iris = datasets.load_iris()\n", + "X = iris.data\n", + "y = iris.target" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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", + "
Sepal Length (cm)Sepal Width (cm)Petal Length (cm)Petal Width (cm)category
05.13.51.40.20
14.93.01.40.20
24.73.21.30.20
34.63.11.50.20
45.03.61.40.20
\n", + "
" + ], + "text/plain": [ + " Sepal Length (cm) Sepal Width (cm) Petal Length (cm) Petal Width (cm) \\\n", + "0 5.1 3.5 1.4 0.2 \n", + "1 4.9 3.0 1.4 0.2 \n", + "2 4.7 3.2 1.3 0.2 \n", + "3 4.6 3.1 1.5 0.2 \n", + "4 5.0 3.6 1.4 0.2 \n", + "\n", + " category \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# just to create a nice table\n", + "df = pd.DataFrame({\"Sepal Length (cm)\": X[:,0], \"Sepal Width (cm)\": X[:,1], \n", + " 'Petal Length (cm)': X[:,2], 'Petal Width (cm)': X[:,3], \n", + " 'category': y})\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['setosa', 'versicolor', 'virginica']" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(iris.target_names)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# split data into training and test data sets\n", + "x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Petal width')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot with color code\n", + "plt.subplots(1, 2, figsize=(10, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.scatter(X[:, 0], X[:, 1], c=y, edgecolor='k')\n", + "plt.xlabel('Sepal length')\n", + "plt.ylabel('Sepal width')\n", + "\n", + "plt.subplot(1, 2, 2)\n", + "plt.scatter(X[:, 2], X[:, 3], c=y, edgecolor='k')\n", + "plt.xlabel('Petal length')\n", + "plt.ylabel('Petal width')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Softmax regression" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/local/home/marks/anaconda3/envs/myML/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:1173: FutureWarning: `penalty='none'`has been deprecated in 1.2 and will be removed in 1.4. To keep the past behaviour, set `penalty=None`.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "log_reg = LogisticRegression(multi_class='multinomial', penalty='none')\n", + "log_reg.fit(x_train, y_train);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## k-nearest neighbor" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier\n", + "kn_neigh = KNeighborsClassifier(n_neighbors=5)\n", + "kn_neigh.fit(x_train, y_train);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fisher linear discriminant" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", + "fisher_ld = LinearDiscriminantAnalysis()\n", + "fisher_ld.fit(x_train, y_train);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Classification accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LogisticRegression\n", + "accuracy: 0.96\n", + "[[29 0 0]\n", + " [ 0 23 0]\n", + " [ 0 3 20]] \n", + "\n", + "KNeighborsClassifier\n", + "accuracy: 0.95\n", + "[[29 0 0]\n", + " [ 0 23 0]\n", + " [ 0 4 19]] \n", + "\n", + "LinearDiscriminantAnalysis\n", + "accuracy: 0.99\n", + "[[29 0 0]\n", + " [ 0 23 0]\n", + " [ 0 1 22]] \n", + "\n" + ] + } + ], + "source": [ + "for clf in [log_reg, kn_neigh, fisher_ld]:\n", + " y_pred = clf.predict(x_test)\n", + " acc = accuracy_score(y_test, y_pred)\n", + " print(type(clf).__name__)\n", + " print(f\"accuracy: {acc:0.2f}\")\n", + " \n", + " # confusion matrix: columns: true class, row: predicted class\n", + " print(confusion_matrix(y_test, y_pred),\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 1.00 1.00 1.00 29\n", + " 1 0.88 1.00 0.94 23\n", + " 2 1.00 0.87 0.93 23\n", + "\n", + " accuracy 0.96 75\n", + " macro avg 0.96 0.96 0.96 75\n", + "weighted avg 0.96 0.96 0.96 75\n", + "\n" + ] + } + ], + "source": [ + "y_pred = log_reg.predict(x_test)\n", + "print(classification_report(y_test, y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.8.16" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/03_ml_basics_log_regr_heart_disease.ipynb b/notebooks/03_ml_basics_log_regr_heart_disease.ipynb new file mode 100644 index 0000000..237da7f --- /dev/null +++ b/notebooks/03_ml_basics_log_regr_heart_disease.ipynb @@ -0,0 +1,502 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Logistic regression with scikit-learn: heart disease data set" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read data " + ] + }, + { + "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", + " \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", + "
agesexcptrestbpscholfbsrestecgthalachexangoldpeakslopecathaltarget
063131452331015002.30011
137121302500118703.50021
241011302040017201.42021
356111202360117800.82021
457001203540116310.62021
.............................................
29857001402410112310.21030
29945131102640113201.21030
30068101441931114103.41230
30157101301310111511.21130
30257011302360017400.01120
\n", + "

303 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " age sex cp trestbps chol fbs restecg thalach exang oldpeak \\\n", + "0 63 1 3 145 233 1 0 150 0 2.3 \n", + "1 37 1 2 130 250 0 1 187 0 3.5 \n", + "2 41 0 1 130 204 0 0 172 0 1.4 \n", + "3 56 1 1 120 236 0 1 178 0 0.8 \n", + "4 57 0 0 120 354 0 1 163 1 0.6 \n", + ".. ... ... .. ... ... ... ... ... ... ... \n", + "298 57 0 0 140 241 0 1 123 1 0.2 \n", + "299 45 1 3 110 264 0 1 132 0 1.2 \n", + "300 68 1 0 144 193 1 1 141 0 3.4 \n", + "301 57 1 0 130 131 0 1 115 1 1.2 \n", + "302 57 0 1 130 236 0 0 174 0 0.0 \n", + "\n", + " slope ca thal target \n", + "0 0 0 1 1 \n", + "1 0 0 2 1 \n", + "2 2 0 2 1 \n", + "3 2 0 2 1 \n", + "4 2 0 2 1 \n", + ".. ... .. ... ... \n", + "298 1 0 3 0 \n", + "299 1 0 3 0 \n", + "300 1 2 3 0 \n", + "301 1 1 3 0 \n", + "302 1 1 2 0 \n", + "\n", + "[303 rows x 14 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# filename = \"heart.csv\"\n", + "filename = \"https://www.physi.uni-heidelberg.de/~reygers/lectures/2021/ml/data/heart.csv\"\n", + "df = pd.read_csv(filename)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "y = df['target'].values\n", + "X = df[[col for col in df.columns if col!=\"target\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, shuffle=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit the model" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/local/home/marks/anaconda3/envs/myML/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:1173: FutureWarning: `penalty='none'`has been deprecated in 1.2 and will be removed in 1.4. To keep the past behaviour, set `penalty=None`.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
LogisticRegression(max_iter=5000, penalty='none', tol=1e-05)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LogisticRegression(max_iter=5000, penalty='none', tol=1e-05)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "lr = LogisticRegression(penalty='none', fit_intercept=True, max_iter=5000, tol=1E-5)\n", + "lr.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test predictions on test data set" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.82 0.76 0.79 76\n", + " 1 0.78 0.83 0.80 76\n", + "\n", + " accuracy 0.80 152\n", + " macro avg 0.80 0.80 0.80 152\n", + "weighted avg 0.80 0.80 0.80 152\n", + "\n" + ] + } + ], + "source": [ + "from sklearn.metrics import classification_report\n", + "y_pred_lr = lr.predict(X_test)\n", + "print(classification_report(y_test, y_pred_lr))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare two classifiers using the ROC curve" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier\n", + "rf = RandomForestClassifier(max_depth=3)\n", + "rf.fit(X_train, y_train)\n", + "y_pred_rf = rf.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAG6CAYAAAAPuZLqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABP3UlEQVR4nO3deVxUZfs/8M8ZlhnWQSUQZAlzzxYDTTC0jDC1TDPT6pf785UyTZHMpbTUMsvM3axcslzIMrMeUnnS3DNRLHugtFRQWRRSQAYZlvv3Bw+T4wzLwJmN+bxfr3kJ97nPOdcchbm8z3XuWxJCCBARERE5GIW1AyAiIiKyBiZBRERE5JCYBBEREZFDYhJEREREDolJEBERETkkJkFERETkkJgEERERkUNytnYAtqqyshJZWVnw8vKCJEnWDoeIiIjqQQiBoqIiBAYGQqGofayHSVANsrKyEBwcbO0wiIiIqAEuXLiAoKCgWvswCaqBl5cXgKqL6O3tbeVoiIiIqD4KCwsRHBys+xyvDZOgGlTfAvP29mYSREREZGfqU8rCwmgiIiJySEyCiIiIyCExCSIiIiKHxCSIiIiIHBKTICIiInJITIKIiIjIITEJIiIiIofEJIiIiIgcEpMgIiIickhMgoiIiMgh2UUStH//fjz++OMIDAyEJEnYvn17nfvs27cP4eHhUKlUaN26NT788EPzB0pERER2wy6SoOLiYtxzzz1Yvnx5vfqfO3cO/fr1Q3R0NFJTUzFjxgxMnDgRX331lZkjJSIiInthFwuo9u3bF3379q13/w8//BAhISFYvHgxAKBjx45ISUnBwoULMXjwYDNFWT+ishIlmiKrxmCv3Ny9ICnsIm8nIiI7YBdJkKmOHDmC2NhYvbY+ffpgzZo1KCsrg4uLi8E+paWlKC0t1X1fWFholthKNEVwXxhilmM3dekundBh+iEmQkREJIsm+WmSk5MDf39/vTZ/f3+Ul5cjLy/P6D7z58+HWq3WvYKDgy0RKpmgY1kaR9GIiEg2TXIkCAAkSdL7XghhtL3a9OnTER8fr/u+sLDQLImQm7sXNAmZsh+3KSspLkKLVXdaOwwiImpimmQS1LJlS+Tk5Oi1Xb58Gc7OzmjRooXRfZRKJZRKpdljkxQKuHuqzX6epqqkmCNBVuHiDtTwHwhTuLk41fgfESIiS2uSSVBkZCS+/fZbvbbdu3cjIiLCaD0Q2Q+OCFnHscp2GKKdDaBxCUxEaDNsjYtkIkRENsEuaoKuX7+OkydP4uTJkwCqHoE/efIkMjOrbitNnz4dw4cP1/WPi4tDRkYG4uPjkZ6ejrVr12LNmjVISEiwRvjUSG7uXkh36WTtMBxaV8VpuKG07o51SMm4ipKyChkiIiJqPLsYCUpJScFDDz2k+766dmfEiBFYv349srOzdQkRAISFhSEpKQmTJ0/GihUrEBgYiKVLl1r98XhqGEmhQIfph6BhUbTllWngvqQDAOD4azGAq0eDDqPRViBi3n/kjIyIqNHsIgl68MEHdYXNxqxfv96grVevXjhx4oQZoyJLYi2VlWj/+RXh7uoMuNrFrwwionrhbzQiqh+tphH7lsMNN/73dTHq/atHpoJsIiJjmAQRUf0sbNPgXd0BpKuqj2PCjsHdgdE7mQgRkVnYRWE0EVmJi3tVImItF34CyhoxAkVEVAuOBBFRzSSpaiSmkYmIRluO8P8VRh9/Laaqvqg2Wk2jRp6IiOqDSRAR1U6SGvxU2D/KUYKq+2EaqAA41dnf/X9faYoLAW15vc5iU5Mxsp6JyOYxCSIii6rPo/JuuKGrIap+RN/usJ6JyOaxJoiIzM7NxQkRoc3q3b8EShyrbGfGiCyA9UxENo8jQURkdpIkYWtcpGmzRYs+0NQzidBoKxD97l4A9aw5MifWMxHZDSZBRGQRkiSZnpwo6zlBpvafmiO4enBSRyKqF/6mIKImRaO18tpk2n+Kuhs1wWQ1FlgTmQ2TICJqUqy9RtnNRd2y3BZjgTWR2bAwmojsnqmF1+Yke1E3C6yJzIYjQURk9xpUeG0mGm0FIuYBbihtXJE2C6yJzI5JEBE1CQ0qvDYbCSVQGZ0YskETOppSW8QaIqJ6s5XfGERETY6x+qSI0GbYGhdpWiJkyogQa4iI6o01QUREMqqrPikl42r9bts1dPFa1hAR1RtHgoiIZFRTfVJVrZAJT66Zungta4iITMYkiIhIZnXVJ5k2l5Gynv1uWnRWWw7ADhedJbIwJkFERBZmjrmMbp6fKHzef/6ZQbuuWBpSo0TURLAmiIjIAmxpLqOb1btGiagJ4kgQEZEFmH0uI20xsLDqy+OvxVStoVYLk2uUiJogJkFERBZi3rmM/jmuu6szF5Elqgf+lBARNTX1mVxRWw433AAAaK4XAq76kzrWNOkiC6mpKWESRETU1NTjUXl34J+FXpcabj9W2Q5DtLMB6Cc8LKSmpoSF0URETUFDJ1esQVfFabih1KCdhdTUlHAkiIioKTB1ckUAQgjDhKZMA/clHQDoF1izkJqaIiZBRERNhSTV+VSYXncA7rfOxahlgTU5Dt4OIyIiIofEJIiIiIgcEpMgIiIickhMgoiIiMghMQkiIiIih8QkiIiIiBwSkyAiIiJySEyCiIiIyCExCSIiIiKHxCSIiIiIHBKTICIiInJITIKIiIjIITEJIiIiIofE5YGJiMgkGm2FtUMAALi5OEGSJGuHQXaMSRAREZkkYt5/rB0CACAitBm2xkUyEaIG4+0wIiKqk5uLEyJCm1k7DD0pGVdRUmYbo1JknzgSREREdZIkCVvjIm0i6dBoK2xmNIrsG5MgIiIyTqvR+1YC4G6dSG5RDjfcAABorhcCrk56W2usFXJxB3jrjG7CJIiIiIxb2MbaERjlDiBd9b9vlpqwY3B3YPROJkKkw5ogIiL6h4t7VbLQFF34CSjT1N2PHAZHgoiI6B+SVDVaYuPJghDCoD5Jo61A9Lt7AQDHX4uBu+v/PuK0Gpsd1SLrYhJERET6JAlw9bB2FLWSALgrb2nUlqMEVffJNFABqK4VKv+nlkkrQ3LH2qImg0kQERE1OTc/PeaGG//UEMkxIsTaoiaDNUFERNQk1DSXUQmUOFbZTr4TsbaoyeBIEBERNQk1zWVUNa8Q4IZS/VohU7G2qMlhEkRERE2GJEk1JDlSVb2QqwfQ0CSImhz+SyAiIofRqMVftf8UWGuKCwFtud5mN3cvSApWmdgTJkFEROQwGrPcxs0F1u5LOhhsT3fphA7TDzERsiP8myIioiZNrsVf6yqw7liWhhJNUaPPQ5bDkSAiImrSZF38VfSB5pYnw0qKi9Bi1Z2NPzZZnN2MBK1cuRJhYWFQqVQIDw/HgQMHau2/ceNG3HPPPXB3d0dAQABGjRqF/Px8C0VLRES2pLpgutEvpQvcPdV6LzcPr39OVKYBtMX6LyGs98apVnaRBCUmJmLSpEmYOXMmUlNTER0djb59+yIzM9No/4MHD2L48OEYM2YM/vvf/2Lr1q04duwYxo4da+HIiYjIkbgv6QC8Haj/WvsoEyEbZRdJ0KJFizBmzBiMHTsWHTt2xOLFixEcHIxVq1YZ7f/TTz/h9ttvx8SJExEWFoYHHngA48aNQ0pKSo3nKC0tRWFhod6LiIioTi7utU/GyMkVbZbNJ0FarRbHjx9HbGysXntsbCwOHz5sdJ+oqChcvHgRSUlJEEIgNzcXX375Jfr371/jeebPnw+1Wq17BQcHy/o+iIioiZIkDNHORscba6FJyARmZFW9Ev60dmRUB5tPgvLy8lBRUQF/f3+9dn9/f+Tk5BjdJyoqChs3bsTQoUPh6uqKli1bwsfHB8uWLavxPNOnT0dBQYHudeHCBVnfBxERNWU3T8ZY/XKvezeyKptPgqpJtyxUJ4QwaKuWlpaGiRMnYtasWTh+/Dh27tyJc+fOIS4ursbjK5VKeHt7672IiIio6bL5R+R9fX3h5ORkMOpz+fJlg9GhavPnz0ePHj3wyiuvAADuvvtueHh4IDo6GvPmzUNAQIDZ4yYiIiLbZvMjQa6urggPD0dycrJee3JyMqKioozuo9FooLhlxk4nJycAVSNIRERERDafBAFAfHw8PvnkE6xduxbp6emYPHkyMjMzdbe3pk+fjuHDh+v6P/7449i2bRtWrVqFs2fP4tChQ5g4cSK6deuGwMBAa70NIiIisiE2fzsMAIYOHYr8/HzMmTMH2dnZ6Ny5M5KSkhAaGgoAyM7O1pszaOTIkSgqKsLy5csxZcoU+Pj4oHfv3liwYIG13gIRETkyrQmPyLu4AzXUvJK8JMH7Q0YVFhZCrVajoKCARdJERFQjjbYcnWbtAgCkzekDd9f/jS9oi6smSzRVcHdg9E4mQg1kyue3XdwOIyIisjsu7lUJjak4uaLF2MXtMCIiIrsjSVUjOvVNaLQaYGEb88ZEepgEERERmYskVU2cSDaJSRAREZFMNNoKgzY3F6caJ/et0a2F1CyWNgsmQURERDKJmPcfw7bQZtgaF2laInTrbTEWS5sFC6OJiIgawc3FCRGhzWrcnpJxFSVlhiNEBmorpGaxtFlwJIiIiKgRJEnC1rhIg0RHo60wOjJUy4EMC6lZLG1WTIKIiIgaSZKkf+YHatyBWEhtQbwdRkRERA6JSRARERE5JCZBRERE5JCYBBEREZFDYhJEREREDolJEBERETkkJkFERETkkJgEERERkUPiZIlERERmZmxh1ZrUuODqrYuqAlxYtZGYBBEREZmZKctn1LjgqrHlM7iwaqPwdhgREZEZ1LWwak30FlytbVFVgAurNhJHgoiIiMygpoVVa2J0wVVji6oCXFhVJkyCiIiIzESWhVW5qKrZ8HYYEREROSQmQUREROSQmAQRERGRQ2ISRERERA6JhdFERET2zNgkijXh5Ip6mAQRERHZM1Melefkinp4O4yIiMje1DWJYk04uaIejgQRERHZm5omUawJJ1c0ikkQERGRjbl1wVWji6pyEsVGYxJERERkY25dPqPGRVWpUVgTREREZANqW3BVb1FVkg1HgoiIiGyAsQVXjS6qSrJhEkRERGQjZFlwleqNt8OIiIjIITEJIiIiIofEJIiIiIgcEpMgIiIickisviIiIrIDt06gWBujkyuSASZBREREdsCUR+U5uWL98HYYERGRjaptAsXacHLF+uFIEBERkY0yNoFibTi5ommYBBEREdmwhk6gqFdDpC2Hu4wxNRVMgoiIiJqgm0eE3HAD6aqqr4UQYKVQFVmToB9//BGbN2/Gr7/+ir///htlZWU19pUkCX/99ZecpyciInJo1TVEKRlXa+xTUlYBd6UFg7JhsiRBQgiMHj0aGzZs0H1fF1asExERyaumGiLN9UJgqZWCsmGyJEHLli3Dp59+CgAIDw/HgAEDEBgYCGdn3m0jIiKyJKM1RK5O1gnGxsmSpaxbtw6SJGHs2LFYvXq1HIckIiIiMygpLjJoc3P3gqRwvFlzZEmCTp8+DQB455135DgcERERmUmLVXcatKW7dEKH6YccLhGS5d2qVCr4+PigWTPTJ3QiIiIi83Jz90K6S6cat3csS0OJxnCEqKmTZSTorrvuwqFDh3D9+nV4enrKcUgiIiKSiaRQoMP0Q9DckuiUFBcZHRlyFLKMBL300kuoqKjA2rVr5TgcERERyUxSKODuqdZ7uXl4WTssq5IlCXrqqacwfvx4vPrqq/jss8/kOCQRERGRWclyO2z06NEAAHd3d4wcORKvv/46unbtCi+vmjNMSZKwZs0aOU5PREREZDJJ1GdmwzooFApIklTvSRKFEJAkCRUVtrvCbWFhIdRqNQoKCuDt7W3tcIiIiGSnuV4A94UhVV8nZMLdU23liBrPlM9vWUaChg8fzhmgiYiIyK7IkgStX79ejsPUauXKlXjvvfeQnZ2NO++8E4sXL0Z0dHSN/UtLSzFnzhx8/vnnyMnJQVBQEGbOnKm7dUdEREQ3KdMA2lvSAhd3oAkPctjFuhaJiYmYNGkSVq5ciR49emD16tXo27cv0tLSEBISYnSfp59+Grm5uVizZg3atGmDy5cvo7y83MKRExER2Qf3JR0MG4O7A6N3NtlESJaaIHO7//77cd9992HVqlW6to4dO2LgwIGYP3++Qf+dO3di2LBhOHv2LJo3b16vc5SWlqK0tFT3fWFhIYKDg1kTRERETZamtAz/fSsKXRWna+40Iwtw9bBcUI1k8Zqgm+Xm5uLLL79ESkoKLl++DEmScNttt6Fr164YPHgw/P39TTqeVqvF8ePHMW3aNL322NhYHD582Og+O3bsQEREBN5991189tln8PDwwIABAzB37ly4ubkZ3Wf+/Pl48803TYqNiIjIrkkShmhnww2lOP5azD8Lr2o1wMI21o3NAmRLgioqKvD6669j0aJFKCsrAwDd02KSJGHDhg2Ij4/HlClTMGfOHDg51W9F27y8PFRUVBgkT/7+/sjJyTG6z9mzZ3Hw4EGoVCp8/fXXyMvLw4svvoi///67xgkdp0+fjvj4eN331SNBRERETZuEEqiqRntuXX2+iZPt3Q4fPhxbtmyBEAJKpRIREREICgoCAFy8eBEpKSkoLS3FO++8g8zMTJMnVbz16bPqx+yNqayshCRJ2LhxI9Tqqsf9Fi1ahKeeegorVqwwOhqkVCqhVCpNiomIiIjslywzRm/fvh2bN2+GEALx8fHIzs7GgQMHsHnzZmzevBkHDhxATk4OEhISIITApk2bsGPHjnod29fXF05OTgajPpcvX67x1lpAQABatWqlS4CAqhoiIQQuXrzY8DdKRERETYYsSdCaNWsgSRJmzpyJhQsXwsfHx6CPWq3Gu+++i5kzZ0IIgY8//rhex3Z1dUV4eDiSk5P12pOTkxEVFWV0nx49eiArKwvXr1/XtZ0+fRoKhUI3OkVERESOTZYk6NixY1AoFEhISKizb0JCAhQKBY4dO1bv48fHx+OTTz7B2rVrkZ6ejsmTJyMzMxNxcXEAqup5hg8fruv/7LPPokWLFhg1ahTS0tKwf/9+vPLKKxg9enSNhdFERESOTKOtgEZbrns5Allqgq5evQq1Wq13+6km1f2uXr1a7+MPHToU+fn5mDNnDrKzs9G5c2ckJSUhNDQUAJCdnY3MzExdf09PTyQnJ2PChAmIiIhAixYt8PTTT2PevHmmvzkiIiIHEDHvP7qv3XAD6aqqr4UQaJqzBMk0T1DLli2Rn5+P/Pz8Op/JLygoQIsWLeDr61vj0122gGuHERFRUyeEwJAPjyAlQ39goioJqlphwd7WFLP4PEFdu3ZFUlISPvjgA8yePbvWvh988AEqKysREREhx6mJiIiogSRJwta4SJSU6S9orrleCCy1UlAWJEtN0KhRoyCEwNy5c/H666/rFSRXKyoqwmuvvYa5c+dCkiSMHTtWjlMTERFRI0iSBHdX51te9ZvLz97JtmzGsGHD8MUXX0CSJKhUKnTt2hWtWrWCJEm4cOECUlJScOPGDQghMHToUGzevFmO05oNb4cREZGj0lwvgPvCqrU581/4L9w8vPS2u7l7QVLIMo4iO6ssm/HZZ58hKCgIS5cuRUlJCfbv36+bzLA6z3J2dsbLL7+Mt99+W67TEhERkRm1WHWnQVu6Syd0mH7IZhOh+pJ9AdWsrCx89dVXurXDAMDPzw8REREYPHgwAgMD5Tyd2XAkiIiIHJWorMTv83ugY1lajX1stWDalM9vu1hF3hqYBBERkSMTlZUo0RTptZUUF+lGhppCEuRYK6URERFRvUgKRa1JTklxkUGbLdcKGcMkiIiIiEzWFGqFTE6C5syZA6BqYdMXX3xRr81Us2bNatB+REREZHlu7l5Id+lUY61Qx7I0aDRFNnmbzBiTa4IUCgUkSUL79u2Rlpam12aqioqKujtZCWuCiIiIDNl6rZBZa4J69uwJSZIQEhJi0EZERERNW121QvbE5CToxx9/rFcbEREROR6NtgK4ZRV6NxcnmxwsYWE0ERERySb63b0ogUqvLSK0GbbGRdpcImQf5dtERERks9xcal9rLCXjqsEirbbAIiNB3333HZKTk+Hk5IR+/fohJibGEqclIiIiC7h5hOf4azGAqweAqltjEfP+Y62w6iTLSNC2bdvQunVrxMXFGWyLj4/HE088geXLl2PJkiXo06cPXnnlFTlOS0RERDbGnlajlyUJ2rFjBzIyMhAdHa3XfuLECSxevBhCCAQHB+OOO+6AEAKLFi1iMTURERFZlSxJ0LFjxwAADz/8sF772rVrAQCDBg3C2bNncfr0aYwfPx5CCHz88cdynJqIiIioQWRJgq5cuQJnZ2e0bNlSr3337t2QJAmvvvoqFP+bQnvGjBkAgCNHjshxaiIiIqIGkSUJunbtGjw9PfXa8vPz8eeff8LHxwfdunXTtQcEBMDDwwPZ2dlynJqIiIioQWRJgjw9PVFQUICysjJd28GDBwEAkZGRBv1dXFzg7MwpioiIiMh6ZEmCOnToACEEkpKSdG2JiYmQJMmgWFqj0aCgoMDg1hkRERGRJckyHPPkk0/ip59+wtixY/H7778jOzsbiYmJUCgUGDJkiF7fY8eOQQiBsLAwOU5NRERE1CCyJEEvvfQSPv/8c/z666+YMWMGqhemnzBhAlq3bq3Xd9u2bZAkCT179pTj1EREREQNIksSpFKpcPDgQSxevBhHjhyBj48PHnvsMTzzzDN6/bRaLfbt24eQkBDExsbKcWoiIiKiBpGtOtnT0xOvvfZarX1cXV1x8uRJuU5JRERE1GBcQJWIiIgcEpMgIiIickgm3w7bsGEDAECtVuOJJ57QazPV8OHDG7QfERER2Sit5qavy+GGGyiB0nrx1EIS1Y9y1ZNCoYAkSWjfvj3S0tL02kw6sSShvLzcpH0sqbCwEGq1GgUFBfD29rZ2OERERLZLWwy8HVjj5mOV7XDnzMNwV7qYPRRTPr9NHgkKCQmBJEkIDAw0aCMiIiIH5OIOBHcHLvxkdHNXxWloyjSAUm3hwGpnchJ0/vz5erURERGRg5AkYPROoEyj16wpLoT7kg5WCqpuXMCLiIiIGk+SAFcP/Tat7Za9AEyCiIiIyBLKNID2lrTDxb0qebISWZIgrVaL33//Ha6urujQofZhr99//x1arRYdO3aEi4v5C6SIiIjI+ozeFgvuXnUbzUqJkCzzBCUmJqJLly5YvHhxnX3feustdOnSBV9++aUcpyYiIiJb5eKOY5Xtat5+4SeDOiJLkiUJ+uqrrwAAzz//fJ19x4wZAyEEkyAiIqKmTpIwRDsbHW+shSYhE5iRVfVK+NPakQGQ6XbYb7/9BgC455576uwbHh4OADh16pQcpyYiIiKbJqEEKmigAuD0v7ZyuFszpP+RJQnKysqCWq2Gp6dnnX29vLzg4+OD7OxsOU5NREREdiBi3n90X7vhBtJVVV8LIWCt0mhZboe5urqipKSkXn2FECgpKeHkikRERE2cm4sTIkKb1dqnpKzCQtEYkmUkKCwsDL/++iuOHDmCyMjIWvsePnwYpaWlaNOmjRynJiIiIhslSRK2xkUaJDqa64XAUisFdRNZRoIeeeQRCCEwbdq0WtcDKy8vx/Tp0yFJEmJjY+U4NREREdkwSZLg7up8y8up7h0tQJYkaOLEiVCpVDh48CBiYmKQmppq0OfEiRN4+OGHcfDgQSiVSrz88stynJqIiIioQWS5HRYUFITVq1dj5MiROHDgACIiItCyZUuEhoZCkiScO3cOubm5VcVPkoSPPvoIISEhcpyaiIiIqEFkWzbj+eefR4sWLfDSSy/h/PnzyM7ONngCrHXr1li+fDkeffRRuU5LRERE1CCyrh3Wr18/nDlzBnv37sXhw4eRk5MDAAgICEBUVBQeeughKBSy3IEjIiIiahTZF1B1cnJCTEwMYmJi5D40ERERkWw4LENEREQOSfaRoF9//RW7du1CRkYGNBoN1q5dq9tWVlaGK1euQJIkBAQEyH1qIiIionqTLQkqKCjA6NGjsX37dgDQPQl2axJ0zz334OrVqzh9+jRat24t1+mJiIiITCLL7bDy8nL069cP27dvh7u7O/r37w+VSmXQz93dHaNHj0ZlZaUuWSIiIiKyBlmSoDVr1uDIkSNo3bo1/vjjD+zYsQNqtdpo38GDBwMAvv/+ezlOTURERNQgsiRBmzZtgiRJ+OCDDxAYGFhr3y5dukChUCAtLU2OUxMRERE1iCxJ0KlTp+q9HpiLiwvUajXy8/PlODURERFRg8iSBBUXF8PLywuurq716q/VauHsLPuDaURERET1JksS5Ovri8LCQhQXF9fZ98yZMyguLuYj8kRERGRVsiRBXbt2BQD8+9//rrPvBx98AADo0aOHSedYuXIlwsLCoFKpEB4ejgMHDtRrv0OHDsHZ2Rn33nuvSecjIiKipk2WJGjkyJEQQmDWrFm69cKMee+99/Dhhx9CkiSMHj263sdPTEzEpEmTMHPmTKSmpiI6Ohp9+/ZFZmZmrfsVFBRg+PDhePjhh+t9LiIiInIMsiRBAwcORP/+/XH69GlERERg2rRpuHHjBgBg69atmDVrFjp27Ihp06YBAIYNG4aePXvW+/iLFi3CmDFjMHbsWHTs2BGLFy9GcHAwVq1aVet+48aNw7PPPovIyMiGvzkiIiJqkmSrTt6yZQv+3//7f/jmm2/w3nvv6dqHDRsGoGoGaQAYNGgQ1qxZU+/jarVaHD9+XJdAVYuNjcXhw4dr3G/dunX466+/8Pnnn2PevHl1nqe0tBSlpaW67wsLC+sdIxEREdkf2RZQ9fDwwNdff41vv/0WAwYMQIsWLSCEgBAC3t7euhmlv/rqK6OzSdckLy8PFRUV8Pf312v39/ev8dbbmTNnMG3aNGzcuLHeT6HNnz8farVa9woODq53jERERGR/ZH9OvX///ujfvz+AquU0KioqoFQqG31cSZL0vq9em+xWFRUVePbZZ/Hmm2+iXbt29T7+9OnTER8fr/u+sLCQiRAREVETJksSFBYWBoVCgV27dqFNmzb/HNzZudHzAfn6+sLJyclg1Ofy5csGo0MAUFRUhJSUFKSmpuKll14CAFRWVkIIAWdnZ+zevRu9e/c22E+pVMqSrBEREZF9kCUJys7Ohqurq14CJBdXV1eEh4cjOTkZgwYN0rUnJyfjiSeeMOjv7e2NU6dO6bWtXLkSe/bswZdffomwsDDZYyQiIiL7I0sSFBgYiCtXrshxKKPi4+Px/PPPIyIiApGRkfjoo4+QmZmJuLg4AFW3si5duoQNGzZAoVCgc+fOevv7+flBpVIZtBMREZHjkqUwOiYmBhqNBqmpqXIczsDQoUOxePFizJkzB/feey/279+PpKQkhIaGAqgaiaprziAiIiKim0mi+tn1Rjh79izuvfde3HXXXUhOToa7u7scsVlVYWEh1Go1CgoK4O3tbe1wiIiImgzN9QK4Lwyp+johE+6eatmObcrntyy3w5ydnbF69WqMGzcOnTt3xoQJExAVFQU/Pz84OTnVuF9ISIgcpyciIiIymWxPh1UrLi5GQkJCnftIkoTy8nI5Tk9ERERkMlmSoIbcUZPhLhwRERFRg8mSBJ07d06OwxARERFZTKOToMrKShQXF6OwsBDNmzc3aZZmIiIiImtp8CPyZWVlePXVV9G8eXPcdddd6NGjBzp27IjbbrsNb731Fm93ERERkU1r8EjQwIEDsXPnToNkJz8/H7NmzcKZM2ewfv36xsZHREREZBYNSoK2bt2K77//HgDQpk0bDBkyBEFBQTh//jw2btyIrKwsfPbZZxg1ahR69eola8BEREREcmhQEvT5558DAGJjY/HNN9/oLTw6c+ZM9O7dG6mpqdi4cSOTICIiIrJJDaoJOnHiBCRJwgcffGCw8rq3tzcWLFgAIYTZltEgIiIiaqwGJUF5eXlQqVTo2LGj0e0RERG6fkRERES2qEFJUGlpKdTqmtf5qN5WWlrasKiIiIiIzEyWVeSJiIiI7A2TICIiInJIDZ4nKDc3t9YV4iVJqrUPF1AlIiIia2pwEsQZoYmIiMieNSgJmj17ttxxEBEREVkUkyAiIiJySCyMJiIiIofEJIiIiIgcEpMgIiIickhMgoiIiMghMQkiIiIih8QkiIiIiBwSkyAiIiJySEyCiIiIyCExCSIiIiKHxCSIiIiIHBKTICIiInJITIKIiIjIITEJIiIiIofEJIiIiIgcEpMgIiIickhMgoiIiMghMQkiIiIih8QkiIiIiBwSkyAiIiJySEyCiIiIyCExCSIiIiKHxCSIiIiIHBKTICIiInJITIKIiIjIITEJIiIiIofEJIiIiIgcEpMgIiIickhMgoiIiMghMQkiIiIih8QkiIiIiBwSkyAiIiJySEyCiIiIyCExCSIiIiKHxCSIiIiIHBKTICIiInJITIKIiIjIITEJIiIiIofEJIiIiIgckt0kQStXrkRYWBhUKhXCw8Nx4MCBGvtu27YNjzzyCG677TZ4e3sjMjISu3btsmC0REREZOvsIglKTEzEpEmTMHPmTKSmpiI6Ohp9+/ZFZmam0f779+/HI488gqSkJBw/fhwPPfQQHn/8caSmplo4ciIiIrJVkhBCWDuIutx///247777sGrVKl1bx44dMXDgQMyfP79ex7jzzjsxdOhQzJo1q179CwsLoVarUVBQAG9v7wbFTURERIY01wvgvjCk6uuETLh7qmU7timf3zY/EqTVanH8+HHExsbqtcfGxuLw4cP1OkZlZSWKiorQvHnzGvuUlpaisLBQ70VERERNl80nQXl5eaioqIC/v79eu7+/P3Jycup1jPfffx/FxcV4+umna+wzf/58qNVq3Ss4OLhRcRMREZFts/kkqJokSXrfCyEM2ozZvHkz3njjDSQmJsLPz6/GftOnT0dBQYHudeHChUbHTERERLbL2doB1MXX1xdOTk4Goz6XL182GB26VWJiIsaMGYOtW7ciJiam1r5KpRJKpbLR8RIREZF9sPmRIFdXV4SHhyM5OVmvPTk5GVFRUTXut3nzZowcORKbNm1C//79zR0mERER2RmbHwkCgPj4eDz//POIiIhAZGQkPvroI2RmZiIuLg5A1a2sS5cuYcOGDQCqEqDhw4djyZIl6N69u24Uyc3NDWq1fBXoREREZL/sIgka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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import roc_curve\n", + "\n", + "y_pred_prob_lr = lr.predict_proba(X_test) # predicted probabilities\n", + "fpr_lr, tpr_lr, _ = roc_curve(y_test, y_pred_prob_lr[:,1])\n", + "\n", + "y_pred_prob_rf = rf.predict_proba(X_test) # predicted probabilities\n", + "fpr_rf, tpr_rf, _ = roc_curve(y_test, y_pred_prob_rf[:,1])\n", + "\n", + "plt.plot(tpr_lr, 1-fpr_lr, label=\"log. regression\")\n", + "plt.plot(tpr_rf, 1-fpr_rf, label=\"random forest\")\n", + "\n", + "plt.xlabel('Recall', fontsize=18)\n", + "plt.ylabel('Precision', fontsize=18);\n", + "plt.legend(fontsize=15)\n", + "\n", + "plt.savefig(\"03_ml_basics_log_regr_heart_disease.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Area under Curve (AUC) scores: 0.80, 0.80\n" + ] + } + ], + "source": [ + "from sklearn.metrics import roc_auc_score\n", + "auc_lr = roc_auc_score(y_test,y_pred_lr)\n", + "auc_rf = roc_auc_score(y_test,y_pred_rf)\n", + "print(f\"Area under Curve (AUC) scores: {auc_lr:.2f}, {auc_rf:.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.8.16" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/03_ml_basics_logistic_regression.ipynb b/notebooks/03_ml_basics_logistic_regression.ipynb new file mode 100644 index 0000000..d628cce --- /dev/null +++ b/notebooks/03_ml_basics_logistic_regression.ipynb @@ -0,0 +1,195 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simple example of logistic regression with scikit-learn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read data \n", + "Data are from the [wikipedia article on logistic regression](https://en.wikipedia.org/wiki/Logistic_regression)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# data: 1. hours studies, 2. passed (0/1) \n", + "filename = \"https://www.physi.uni-heidelberg.de/~reygers/lectures/2021/ml/data/exam.txt\"\n", + "df = pd.read_csv(filename, engine='python', sep='\\s+')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "x_tmp = df['hours_studied'].values\n", + "x = np.reshape(x_tmp, (-1, 1))\n", + "y = df['passed'].values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit the model" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "clf = LogisticRegression(penalty='none', fit_intercept=True)\n", + "clf.fit(x, y);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculate predictions" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "hours_studied_tmp = np.linspace(0., 6., 1000)\n", + "hours_studied = np.reshape(hours_studied_tmp, (-1, 1))\n", + "y_pred = clf.predict_proba(hours_studied)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot result" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df.plot.scatter(x='hours_studied', y='passed')\n", + "plt.plot(hours_studied, y_pred[:,1])\n", + "plt.xlabel(\"preparation time in hours\", fontsize=14)\n", + "plt.ylabel(\"probability of passing exam\", fontsize=14)\n", + "plt.savefig(\"03_ml_basics_logistic_regression.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'C': 1.0,\n", + " 'class_weight': None,\n", + " 'dual': False,\n", + " 'fit_intercept': True,\n", + " 'intercept_scaling': 1,\n", + " 'l1_ratio': None,\n", + " 'max_iter': 100,\n", + " 'multi_class': 'auto',\n", + " 'n_jobs': None,\n", + " 'penalty': 'none',\n", + " 'random_state': None,\n", + " 'solver': 'lbfgs',\n", + " 'tol': 0.0001,\n", + " 'verbose': 0,\n", + " 'warm_start': False}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clf.get_params()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coefficient: [[1.50464522]]\n", + "Intercept: [-4.07771764]\n" + ] + } + ], + "source": [ + "print('Coefficient: ', clf.coef_)\n", + "print('Intercept: ', clf.intercept_)" + ] + } + ], + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}