{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": false }, "source": [ "# [Introduction to Data Science](http://datascience-intro.github.io/1MS041-2023/) \n", "## 1MS041, 2023 \n", "©2023 Raazesh Sainudiin, Benny Avelin. [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_diabetes" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "dataset = load_diabetes()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ".. _diabetes_dataset:\n", "\n", "Diabetes dataset\n", "----------------\n", "\n", "Ten baseline variables, age, sex, body mass index, average blood\n", "pressure, and six blood serum measurements were obtained for each of n =\n", "442 diabetes patients, as well as the response of interest, a\n", "quantitative measure of disease progression one year after baseline.\n", "\n", "**Data Set Characteristics:**\n", "\n", " :Number of Instances: 442\n", "\n", " :Number of Attributes: First 10 columns are numeric predictive values\n", "\n", " :Target: Column 11 is a quantitative measure of disease progression one year after baseline\n", "\n", " :Attribute Information:\n", " - age age in years\n", " - sex\n", " - bmi body mass index\n", " - bp average blood pressure\n", " - s1 tc, total serum cholesterol\n", " - s2 ldl, low-density lipoproteins\n", " - s3 hdl, high-density lipoproteins\n", " - s4 tch, total cholesterol / HDL\n", " - s5 ltg, possibly log of serum triglycerides level\n", " - s6 glu, blood sugar level\n", "\n", "Note: Each of these 10 feature variables have been mean centered and scaled by the standard deviation times the square root of `n_samples` (i.e. the sum of squares of each column totals 1).\n", "\n", "Source URL:\n", "https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html\n", "\n", "For more information see:\n", "Bradley Efron, Trevor Hastie, Iain Johnstone and Robert Tibshirani (2004) \"Least Angle Regression,\" Annals of Statistics (with discussion), 407-499.\n", "(https://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf)\n", "\n" ] } ], "source": [ "print(dataset.DESCR)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "X,Y = load_diabetes(return_X_y=True)\n", "X_train,X_test,Y_train,Y_test = train_test_split(X,Y,random_state=0)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(331, 10) (111, 10) (331,) (111,)\n" ] } ], "source": [ "print(X_train.shape,X_test.shape,Y_train.shape,Y_test.shape)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LinearRegression()
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": [ "LinearRegression()" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "lr = LinearRegression()\n", "lr.fit(X_train,Y_train)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(lr.predict(X_test),Y_test)\n", "plt.scatter(lr.predict(X_test),lr.predict(X_test))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "45.120563074396195" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "MAE = np.mean(np.abs(Y_test - lr.predict(X_test)))\n", "MAE" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "321" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = 346\n", "a = 25\n", "span = b-a\n", "span" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "from Utils import epsilon_bounded" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "82.75719699590479" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "epsilon = epsilon_bounded(len(Y_test),span*2,0.05)\n", "epsilon" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[-37.6366339215086, 127.87776007030098]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[MAE-epsilon,MAE+epsilon]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Wine quality dataset" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "df_red = pd.read_csv('/Users/avelin/Downloads/winequality-red.csv',sep=';')\n", "df_white = pd.read_csv('/Users/avelin/Downloads/winequality-white.csv',sep=';')" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "df_red['type'] = 1" ] }, { "cell_type": "code", "execution_count": 24, "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", "
fixed acidityvolatile aciditycitric acidresidual sugarchloridesfree sulfur dioxidetotal sulfur dioxidedensitypHsulphatesalcoholqualitytype
07.40.700.001.90.07611.034.00.99783.510.569.451
17.80.880.002.60.09825.067.00.99683.200.689.851
27.80.760.042.30.09215.054.00.99703.260.659.851
311.20.280.561.90.07517.060.00.99803.160.589.861
47.40.700.001.90.07611.034.00.99783.510.569.451
\n", "
" ], "text/plain": [ " fixed acidity volatile acidity citric acid residual sugar chlorides \\\n", "0 7.4 0.70 0.00 1.9 0.076 \n", "1 7.8 0.88 0.00 2.6 0.098 \n", "2 7.8 0.76 0.04 2.3 0.092 \n", "3 11.2 0.28 0.56 1.9 0.075 \n", "4 7.4 0.70 0.00 1.9 0.076 \n", "\n", " free sulfur dioxide total sulfur dioxide density pH sulphates \\\n", "0 11.0 34.0 0.9978 3.51 0.56 \n", "1 25.0 67.0 0.9968 3.20 0.68 \n", "2 15.0 54.0 0.9970 3.26 0.65 \n", "3 17.0 60.0 0.9980 3.16 0.58 \n", "4 11.0 34.0 0.9978 3.51 0.56 \n", "\n", " alcohol quality type \n", "0 9.4 5 1 \n", "1 9.8 5 1 \n", "2 9.8 5 1 \n", "3 9.8 6 1 \n", "4 9.4 5 1 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_red.head(5)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "df_white['type'] = 0" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "feature_cols = [col for col in df_red.columns if col!='quality']" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['fixed acidity',\n", " 'volatile acidity',\n", " 'citric acid',\n", " 'residual sugar',\n", " 'chlorides',\n", " 'free sulfur dioxide',\n", " 'total sulfur dioxide',\n", " 'density',\n", " 'pH',\n", " 'sulphates',\n", " 'alcohol',\n", " 'type']" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feature_cols" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "target = 'quality'" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "X1 = df_red[feature_cols].to_numpy()\n", "X2 = df_white[feature_cols].to_numpy()\n", "Y1 = df_red[target].to_numpy()\n", "Y2 = df_white[target].to_numpy()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "X = np.concatenate([X1,X2],axis=0)\n", "Y = np.concatenate([Y1,Y2],axis=0)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(6497, 12) (6497,)\n" ] } ], "source": [ "print(X.shape,Y.shape)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LinearRegression()
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": [ "LinearRegression()" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train,X_test,Y_train,Y_test = train_test_split(X,Y,random_state=0)\n", "from sklearn.linear_model import LinearRegression\n", "lr = LinearRegression()\n", "lr.fit(X_train,Y_train)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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7E55sGhqagJgzJgxqa5aRERE+qmpqQm32x3285T/VkgwGGTv3r0UFhZiGOF/IMfj8TBmzBh2796t3xTpRX0TnvomNPVLeOqb8NQ34WVj35imSVNTE6NGjcJmC38nRcrPWNhsNg477LCYpy8qKsqalRYv9U146pvQ1C/hqW/CU9+El219E+lMRSfdvCkiIiKWUbAQERERy6RtsHA6nSxduhSn0znQTUk76pvw1DehqV/CU9+Ep74JT30TXspv3hQREZHBK23PWIiIiEjmUbAQERERyyhYiIiIiGUULERERMQyaREsli9fjmEYfOc734k43UsvvcT06dNxuVyMHz+eBx54IDUNHCCx9MuLL76IYRh9Xu+//37qGpoit912W5/lHDlyZMR5smGbibdfsmmbAdizZw8LFiygtLSU/Px8jj/+eN56662I82TDdgPx9022bDvjxo0LuZw33nhj2HmyZZuJRcpH3uxtw4YNPPjggxx77LERp6upqWHevHlce+21rFy5ktdee40bbriB4cOHc+GFF6aotakTa7902rp1a4/R34YPH56spg2oSZMm8dxzz3X9bbfbw06bTdtMPP3SKRu2mQMHDnDSSSdxxhln8I9//IOysjK2b99OcXFx2HmyZbtJpG86DfZtZ8OGDQQCga6/N2/ezFlnncXFF18ccvps2WZiZg6gpqYm88gjjzSfffZZ87TTTjMXLlwYdtr//M//NCdOnNjjveuuu86cNWtWkluZevH0ywsvvGAC5oEDB1LWvoGydOlS87jjjot5+mzZZuLtl2zaZhYvXmyefPLJcc2TLdtNIn2TTdtOdwsXLjQnTJhgBoPBkJ9nyzYTqwG9FHLjjTdy7rnn8oUvfCHqtGvXruXss8/u8d4Xv/hF3nzzTdrb25PVxAERT790mjp1KuXl5Zx55pm88MILSWzdwNq2bRujRo2ioqKCSy+9lB07doSdNpu2mXj6pVM2bDOrVq1ixowZXHzxxZSVlTF16lRWrFgRcZ5s2W4S6ZtO2bDtdPL5fKxcuZJrrrkm7A9nZss2E6sBCxZ/+MMf2LhxI8uXL49p+rq6OkaMGNHjvREjRuD3+9m3b18ymjgg4u2X8vJyHnzwQR5//HGeeOIJjj76aM4880xefvnlJLc09U488UQeeeQRnn76aVasWEFdXR1z5sxh//79IafPlm0m3n7Jpm1mx44dVFVVceSRR/L000/zrW99i5tuuolHHnkk7DzZst0k0jfZtO10euqppzh48CBXX3112GmyZZuJ1YDcY7F7924WLlzIM888g8vlinm+3mnR/GzQ0Eg/v55JEumXo48+mqOPPrrr79mzZ7N7927uvvtuTj311GQ1dUCcc845Xf8/ZcoUZs+ezYQJE3j44YdZtGhRyHkG+zYD8fdLNm0zwWCQGTNmcOeddwId/9LesmULVVVVXHnllWHny4btJpG+yaZtp9NDDz3EOeecw6hRoyJOlw3bTKwG5IzFW2+9RX19PdOnTycnJ4ecnBxeeukl7rvvPnJycnrcNNNp5MiR1NXV9Xivvr6enJwcSktLU9X0pEqkX0KZNWsW27ZtS3JrB15BQQFTpkwJu6zZsM2EEq1fQhms20x5eTmVlZU93jvmmGP46KOPws6TLdtNIn0TymDddgB27drFc889xze/+c2I02XLNhOrATljceaZZ7Jp06Ye7339619n4sSJLF68OOQd7bNnz2b16tU93nvmmWeYMWMGDocjqe1NlUT6JZS3336b8vLyZDQxrXi9Xt577z1OOeWUkJ9nwzYTSrR+CWWwbjMnnXQSW7du7fHeBx98wNixY8POky3bTSJ9E8pg3XYAfve731FWVsa5554bcbps2WZiNrD3jn6u99MPN998s3nFFVd0/b1jxw4zPz/f/O53v2tWV1ebDz30kOlwOMw///nPA9Da1InWL/fcc4/55JNPmh988IG5efNm8+abbzYB8/HHHx+A1ibX9773PfPFF180d+zYYa5bt8780pe+ZBYWFpo7d+40TTN7t5l4+yWbtpn169ebOTk55h133GFu27bN/P3vf2/m5+ebK1eu7JomW7ebRPomm7adQCBgHn744ebixYv7fJat20ys0jZYXHXVVeZpp53WY5oXX3zRnDp1qpmbm2uOGzfOrKqqSm0jB0C0fvnJT35iTpgwwXS5XObQoUPNk08+2fzb3/6W+oamwCWXXGKWl5ebDofDHDVqlHnBBReYW7Zs6fo8W7eZePslm7YZ0zTN1atXm5MnTzadTqc5ceJE88EHH+zxebZuN6YZf99k07bz9NNPm4C5devWPp9l8zYTC/1suoiIiFgmLYb0FhERkcFBwUJEREQso2AhIiIillGwEBEREcsoWIiIiIhlFCxERETEMgoWIiIiYhkFCxEREbGMgoWIiIhYRsFCRERELKNgISIiIpZRsBARERHL/H9SzyaQYxk/wQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(lr.predict(X_test),Y_test)\n", "plt.scatter(lr.predict(X_test),lr.predict(X_test))" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.3587525442945037" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.max(np.abs(Y_test-lr.predict(X_test)))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5877140417627457" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "MAE = np.mean(np.abs(Y_test - lr.predict(X_test)))\n", "MAE" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1625" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(Y_test)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.16845176105008947" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "epsilon = epsilon_bounded(len(Y_test),5,0.05)\n", "epsilon" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.4192622807126562, 0.7561658028128351]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[MAE-epsilon,MAE+epsilon]" ] } ], "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.9.13" }, "lx_course_instance": "2023", "lx_course_name": "Introduction to Data Science", "lx_course_number": "1MS041" }, "nbformat": 4, "nbformat_minor": 5 }