{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "IML-Lab1.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "YOT2h12Gxycn", "colab_type": "text" }, "source": [ "# Introduction to Machine Learning - Lab 1\n", "\n", "In this lab, you will learn the skills to become a master Jedi. Please avoid the traps of the Siths and resists all dark emotions that could arise from the frustation associated to programming." ] }, { "cell_type": "code", "metadata": { "id": "KiqAguvm7XaC", "colab_type": "code", "colab": {} }, "source": [ "import numpy as np\n", "\n", "# Loading a plotting library\n", "import matplotlib.pyplot as plt\n", "\n", "# Loading a table library\n", "import pandas as pd\n", "# Changing how floating point numbers are displayed\n", "pd.set_option(\"display.float_format\", lambda x: f\"{x:.5f}\")\n", "\n", "import sklearn" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "KGK1AGjTyXgS", "colab_type": "text" }, "source": [ "## Part 1 - Linear regression" ] }, { "cell_type": "markdown", "metadata": { "id": "zwpbGrr2tody", "colab_type": "text" }, "source": [ "**Task 1**\n", "\n", "\n", "Download the data available at https://www4.stat.ncsu.edu/~boos/var.select/diabetes.tab.txt. The data is a diabetes study trying to measure disease progression one year after baseline from 10 explanatory variables (N = 442). The explanatory variables are age, sex, body mass index, average blood pressure, and six blood serum measurements\n", "\n", "1. Load it using pandas. Pandas has a function called \"read_csv\" that can be useful (documentation: https://pandas.pydata.org/pandas-docs/stable/).\n", "2. Separate the data into X (Explanatory variable) and Y (Response variable)\n", "3. Inspect the data. Look at for instance the function \"describe\" in pandas\n", "4. Standardize the data by subtracting the mean and dividing by the standard deviation.\n", "5. Inpect the data again to see that the mean is zero and the standard deviation is one\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "gKsj5GsK34lN", "colab_type": "code", "outputId": "5e8cd7de-10ff-4b15-b5ec-3e8da7b63c89", "colab": { "base_uri": "https://localhost:8080/", "height": 208 } }, "source": [ "# Downloading the dataset\n", "!wget https://www4.stat.ncsu.edu/~boos/var.select/diabetes.tab.txt" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "--2020-01-31 08:48:34-- https://www4.stat.ncsu.edu/~boos/var.select/diabetes.tab.txt\n", "Resolving www4.stat.ncsu.edu (www4.stat.ncsu.edu)... 152.1.62.52\n", "Connecting to www4.stat.ncsu.edu (www4.stat.ncsu.edu)|152.1.62.52|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 18496 (18K) [text/plain]\n", "Saving to: ‘diabetes.tab.txt’\n", "\n", "diabetes.tab.txt 100%[===================>] 18.06K --.-KB/s in 0.09s \n", "\n", "2020-01-31 08:48:35 (195 KB/s) - ‘diabetes.tab.txt’ saved [18496/18496]\n", "\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "X5uu7JEWxNv3", "colab_type": "code", "outputId": "b4677be8-fb84-41fe-e782-76ed34bd2c90", "colab": { "base_uri": "https://localhost:8080/", "height": 121 } }, "source": [ "# Loading the diabetes dataset\n", "#df = ...\n", "\n", "# Separating the dataset into X (Explanatory variable) and y (Response variable)\n", "#X = ...\n", "#y = ..." ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ " AGE SEX BMI BP S1 S2 S3 S4 S5 S6 Y\n", "0 59 2 32.10000 101.00000 157 93.20000 38.00000 4.00000 4.85980 87 151\n", "1 48 1 21.60000 87.00000 183 103.20000 70.00000 3.00000 3.89180 69 75\n", "2 72 2 30.50000 93.00000 156 93.60000 41.00000 4.00000 4.67280 85 141\n", "3 24 1 25.30000 84.00000 198 131.40000 40.00000 5.00000 4.89030 89 206\n", "4 50 1 23.00000 101.00000 192 125.40000 52.00000 4.00000 4.29050 80 135\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "ttQ13uRv0sS4", "colab_type": "code", "outputId": "fda5c73a-f813-4342-ac19-a0ef68d7c3e4", "colab": { "base_uri": "https://localhost:8080/", "height": 300 } }, "source": [ "# Normalize the features\n", "#X = ..." ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "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", "
AGESEXBMIBPS1S2S3S4S5S6
count442.00000442.00000442.00000442.00000442.00000442.00000442.00000442.00000442.00000442.00000
mean-0.000000.00000-0.00000-0.00000-0.000000.00000-0.00000-0.000000.000000.00000
std1.000001.000001.000001.000001.000001.000001.000001.000001.000001.00000
min-2.25174-0.93747-1.89578-2.36037-2.66239-2.42787-2.14845-1.60428-2.64804-2.89311
25%-0.78328-0.93747-0.71881-0.76978-0.71920-0.63753-0.73746-0.82936-0.69816-0.69676
50%0.11304-0.93747-0.15296-0.11908-0.09074-0.08020-0.13827-0.05444-0.04089-0.02263
75%0.799591.064280.656210.748520.595520.626730.615540.720490.681080.58626
max2.325261.064283.581662.772923.232194.174553.804763.889922.805542.84785
\n", "
" ], "text/plain": [ " AGE SEX BMI ... S4 S5 S6\n", "count 442.00000 442.00000 442.00000 ... 442.00000 442.00000 442.00000\n", "mean -0.00000 0.00000 -0.00000 ... -0.00000 0.00000 0.00000\n", "std 1.00000 1.00000 1.00000 ... 1.00000 1.00000 1.00000\n", "min -2.25174 -0.93747 -1.89578 ... -1.60428 -2.64804 -2.89311\n", "25% -0.78328 -0.93747 -0.71881 ... -0.82936 -0.69816 -0.69676\n", "50% 0.11304 -0.93747 -0.15296 ... -0.05444 -0.04089 -0.02263\n", "75% 0.79959 1.06428 0.65621 ... 0.72049 0.68108 0.58626\n", "max 2.32526 1.06428 3.58166 ... 3.88992 2.80554 2.84785\n", "\n", "[8 rows x 10 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 4 } ] }, { "cell_type": "markdown", "metadata": { "id": "K6dPqdqLCDmh", "colab_type": "text" }, "source": [ "**Task 2**\n", "\n", "In this task we want to perform linear regression on the data to see what relation from the explanatory variables we can obtain in respect to the response variable. We are going to use the package scikit learn (sklearn) in python which is a package containing a bunch of machine learning models. Check out the models in https://scikit-learn.org/stable/user_guide.html\n", "\n", "\n", "1. Look at the documentation for scikit learns Linear Regression model and try to get familiar with what the input and output parameters does https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html\n", "2. Create a Linear regression model and fit it to your data\n", "3. Extract the coefficients (weights) and the intecept (bias) from your fitted model and inspect them. Either look at the values or plot them as a bar chart. Which variables has the highest coefficients and what does it mean if the coefficients are negative or positive?\n", "4. Predict y from your model and the data in X and calculate the root mean sqared error of your predictions.\n", "5. (Optional) fit a new model without standardizing the data. What happens to the coeficcients and the error now? \n", "6. As we have a lot of variables, we cannot visualize our results and regression fit in such multi-dim. space. Instead, let's see how it looks in 2D: select an explanatory variable that has a large coefficient and plot it against y as a scatterplot. (https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.DataFrame.plot.html or https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html) \n", "Add a line that represents the hyperplane resulting from the linear regression, projected to this 2D space (***Hint***: *in 2D, this is a line, defined by the regression weights $w_x$ of the chosen explanatory variable $x$ and bias: $y = x\\cdot w_x + bias $*).\n", "Does it look like a good fit? (Optional:) And what if you instead use a less important explanatory variable?\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "0S0qJICS3LRI", "colab_type": "code", "outputId": "f1072b51-02e9-4d15-8e12-4df27fe06ab7", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "# Perform a regression (predict y from X)\n", "from sklearn.linear_model import LinearRegression\n", "\n", "#model = ..." ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "code", "metadata": { "id": "881Vd7QH6gwR", "colab_type": "code", "outputId": "bedbb415-ea74-4f58-ccf6-7624c5faf692", "colab": { "base_uri": "https://localhost:8080/", "height": 281 } }, "source": [ "# Model parameters\n", "#coefficients = ...\n", "#intercept = ..." ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "fC5JPqWh0sq3", "colab_type": "code", "outputId": "9f0fc4a4-dd45-4b80-f4a0-9d114b7d4770", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "# Calculate the error in the predictions\n", "#y_pred = ...\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Mean squared error : 2859.696\n", "Mean absolute error: 43.277\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "mcLIzF2U0x5H", "colab_type": "code", "outputId": "04e78912-b479-4402-f726-b592134f46e0", "colab": { "base_uri": "https://localhost:8080/", "height": 320 } }, "source": [ "# Scatter plot of a chosen explanatory variable vs. y\n", "# and the regressed line fit" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\nAEhKGm3nL5d0a/XnWyWtT+EYSFG7ts5xRWkrHqXt99h4Rau37NZpozu1esvueS3iuzlmp/imMB8a\nW4BXJiY1OTXT9HdrK4C6+fCeRk2Y9auGtWd0XdPW5Gm/DqXwYziLc+yFGMqqLI99Wc6zDNL4LAEA\nQEhxVwi5pAfMzCX92t23Slru7q9Vb39d0vKYx0DG0p4ktloZIUmrt+yed12r1TvtasBE6dgVd8k+\n3xTmQzf1oaIWP+4304x7kC0erYoWJ9nFK/QYDp2Qkrp/nNkCFF8env8slOU8y4DtogCAojFvUSsj\n0p3Nht29YmaflLRL0vck7XD3obrfedvdj29y32slXStJy5cvP/fOO+/sOo48OXz4sJYsWRI6jFie\ne/2QPpw+eoXF4v4+nX7icakcc2JySpW3JzVTNx77zDR8/GDTjkStYqy30P2T0GnMvax+XE9MTumN\nd97Xh9MzWtzfp+VLjwl6vvsr70T+3UV9pk+v+Lik+eexqM80PSO58vNcPl15d148NSbTWcNHn0M3\nz0XoMRzivaamNqajPM6NQj9uRRHy+c9SludZhM8gQCPGNYqGMY2srV27dq+7jzS7LdYKIXevVP89\naGbbJZ0n6Q0zW+Hur5nZCkkHW9x3q6StkjQyMuJr1qyJE0puPPzww+r1c5lo0dp884aVWpPSt2Cr\nt+xWZaL/qOuHh/q1Z3TNUdd/e3SnPMKOx1b3T8oNY/t1x2OvaNpd/Wa66vyTdd2lK1M7Xii1cT02\nXtGmB/drcqpPtR2ngwPT2rzhjGDfkF6/ZXekVTMD/aZbvnp2yzGctxUfV4/ubHnbi99I7rkIed4h\n3mtqamO63ePcTKfvV2gu5POfpSzPswifQYBGjGsUDWMaedJ1QsjMPiapz90PVX++SNLPJO2Q9C1J\nW6r/3pdEoMhOiCXRnS6pb7XVJer9kzA2XtG2vZW5jlTT7tq2t6KRU5YVdvl4HgtptypAfsW5wx11\njctbkeDhBQqhS8k9FyHPO633mk6SXO0e52bYApSMsmy/Kct5AgCA3hNnhdBySdvNrPZ3fu/ufzGz\nxyXdZWbXSHpJ0pXxw0TWsp4kdlrLJGoNmDRroYRKjoRc0ZHWRDjOOaU12Wq2+uvm9dmt/mrXaa8o\nSYk0Wsh30tGpm46GoWsvFUneErFpKct5AgCA3tJ1QsjdX5B0dpPr/yvpwjhBoXw6nZQ1JgGGjh3Q\n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "DAB4PDFtzGA-", "colab_type": "text" }, "source": [ "## Part 2 - Naive Bayes\n" ] }, { "cell_type": "markdown", "metadata": { "id": "Ifh8pkb1H7oO", "colab_type": "text" }, "source": [ "**Task 1**\n", "\n", "For the second part we are going to look at classification using naive bayes. The data contains passenger data from Titanic and the task is to predict \"what sort of people were most likely to survive?\". The passenger data has 7 features: Name, Sex, Socio-economic class, Siblings/Spouses Aboard, Parents/Children Aboard and Fare and a binary responce variable \"survived\". \n", "\n", "\n", "1. Download the data from https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv and load it using pandas\n", "2. Inspect the data to see what you are working with. Test for instance if you can calculate the average survival rates for male and females.\n", "3. Divide the data into a training set and a testing set. This can for instance be done with \"sklearn.model_selection.train_test_split\" (https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html)\n", "4. Separate X and y for both the training and testing set.\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "V8DX5XhozMXC", "colab_type": "code", "outputId": "88fb4708-ff1a-4852-e6ef-1c2f9bc699f9", "colab": { "base_uri": "https://localhost:8080/", "height": 208 } }, "source": [ "# Downloading the titanic dataset\n", "!wget https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "--2020-01-31 08:48:38-- https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv\n", "Resolving web.stanford.edu (web.stanford.edu)... 171.67.215.200\n", "Connecting to web.stanford.edu (web.stanford.edu)|171.67.215.200|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 44225 (43K) [text/csv]\n", "Saving to: ‘titanic.csv’\n", "\n", "\rtitanic.csv 0%[ ] 0 --.-KB/s \rtitanic.csv 100%[===================>] 43.19K --.-KB/s in 0.1s \n", "\n", "2020-01-31 08:48:39 (304 KB/s) - ‘titanic.csv’ saved [44225/44225]\n", "\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "IhmZbrYqBvfm", "colab_type": "code", "outputId": "2cce2cc1-e86c-4805-d374-7caedf131277", "colab": { "base_uri": "https://localhost:8080/", "height": 206 } }, "source": [ "# Load the data and get familiar with it \n", "#df = ..." ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "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", "
SurvivedPclassNameSexAgeSiblings/Spouses AboardParents/Children AboardFare
003Mr. Owen Harris Braundmale22.00000107.25000
111Mrs. John Bradley (Florence Briggs Thayer) Cum...female38.000001071.28330
213Miss. Laina Heikkinenfemale26.00000007.92500
311Mrs. Jacques Heath (Lily May Peel) Futrellefemale35.000001053.10000
403Mr. William Henry Allenmale35.00000008.05000
\n", "
" ], "text/plain": [ " Survived Pclass ... Parents/Children Aboard Fare\n", "0 0 3 ... 0 7.25000\n", "1 1 1 ... 0 71.28330\n", "2 1 3 ... 0 7.92500\n", "3 1 1 ... 0 53.10000\n", "4 0 3 ... 0 8.05000\n", "\n", "[5 rows x 8 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 10 } ] }, { "cell_type": "code", "metadata": { "id": "PEaHj6GGDj5p", "colab_type": "code", "outputId": "06eb94d3-ed7e-43aa-ef96-5917cc2598c8", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "[Male ] Average survival rate: 19.0%\n", "[Female] Average survival rate: 74.2%\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "gWVnwlcJDur9", "colab_type": "code", "colab": {} }, "source": [ "# Separating the data in a training\n", "#df_train, df_test = ...\n", "\n", "#X_train = ...\n", "#y_train = ...\n", "#X_test = ...\n", "#y_test = ..." ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "J3dBLJvFLHi6", "colab_type": "text" }, "source": [ "**Task 2**\n", "\n", "The second part is to implement a naive bayes classifier to predict survived/not survived from some of the variables. For now we focus on predicting survival only based on the gender and passenger fare (but feel free to experiment with other combinations of variables that you find reasonable!).\n", "Keep in mind that while gender is a categorical (binary) variable, the fare is a contiuous variable!\n", "\n", "\n", "1. Write a function that takes in the gender variable and returns the probabilities of a subject being of this gender, given that it survived/died in the crash. \n", "2. Write a function that takes in the fare variable and returns the probabilities of a subject paying such fare given that they survived/died in the crash. (You can use a Gaussian distribution to model this; look for example into the *normal pdf* function from the *scipy.stats* library)\n", "3. Write a function that takes in an input of the relevant variables and returns the final prediction (that is, calculates all the needed intermediate results, using also the previous two functions, to finally output which one of $P(died\\,|\\,input\\,sex,\\,fare)$ or $P(survived\\,|\\,input \\,sex,\\,fare)$ is larger).\n", "4. Predict survival on the test dataset. Calculate the accuracy of your prediction.\n", "5. Plot a confusion matrix of the predictions (you can check out the confusion_matrix function from sklearn library, and heatmap from seaborn for plotting). How do you interpret the results? Are the sex and fare variables we chose good predictors? What seems more informative, accuracy or confusion matrix, and why?\n", "6. (Optional) Can you improve your predictions using other/more variables?\n", "\n", "\n", "***Hint:***\n", "*The quantity we are interested in is $P(survival \\,| \\,sex, \\,fare)$.\n", "As described in the lecture slides, Bayes theorem tells us that this is proportional to $\\propto P(sex,\\, fare\\,|\\,survival) \\cdot P(survival)$.\n", "You can assume that the fare and sex variables are independent, which means $P(sex\\,,fare\\,|\\,survival) = P(sex\\,|\\,survival)\\cdot P(fare\\,|\\,survival)$.*" ] }, { "cell_type": "code", "metadata": { "id": "D49P6nAME-pu", "colab_type": "code", "colab": {} }, "source": [ "# write the needed functions:\n", "# P(sex | survival)\n", "\n", "\n", "\n", "# P(fare | survival)\n", "\n", "\n", "\n", "# P(survived | fare, sex) vs. P(died | fare, sex) ?\n", "\n", "\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "kE98Av-2b309", "colab_type": "code", "colab": {} }, "source": [ "# Use your model to predict survival on test data\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "lZr44V8Bb_6B", "colab_type": "code", "colab": {} }, "source": [ "# Calculate accuracy of your predictions\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "y774QwmLhj7y", "colab_type": "code", "colab": {} }, "source": [ "# Calculate, plot confusion matrix\n" ], "execution_count": 0, "outputs": [] } ] }