{"cells":[{"cell_type":"code","execution_count":1,"metadata":{"executionInfo":{"elapsed":1661,"status":"ok","timestamp":1709602382539,"user":{"displayName":"Srivatsa Kundurthy","userId":"03839108747452750167"},"user_tz":300},"id":"K15X0B8sJuou"},"outputs":[],"source":["# Imports!\n","import numpy as np\n","import pandas as pd\n","import matplotlib.pyplot as plt\n","%matplotlib inline\n","\n","# Import scikit-learn tools!\n","from sklearn.model_selection import train_test_split\n","from sklearn.linear_model import LinearRegression"]},{"cell_type":"code","execution_count":2,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"collapsed":true,"executionInfo":{"elapsed":185,"status":"ok","timestamp":1709602456724,"user":{"displayName":"Srivatsa Kundurthy","userId":"03839108747452750167"},"user_tz":300},"id":"6_STFD8GJuov","outputId":"95d6caa4-d977-4d2e-f979-c8ad1bee8eb6"},"outputs":[{"data":{"application/vnd.google.colaboratory.intrinsic+json":{"summary":"{\n \"name\": \"df\",\n \"rows\": 100,\n \"fields\": [\n {\n \"column\": \"X\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.289428429977219,\n \"min\": 0.011630010780588007,\n \"max\": 0.9954251702475093,\n \"num_unique_values\": 100,\n \"samples\": [\n 0.02360638828426531,\n 0.018910933823048204,\n 0.9954251702475093\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Y\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.9476506151284375,\n \"min\": -0.634504340863542,\n \"max\": 2.9378953170960727,\n \"num_unique_values\": 100,\n \"samples\": [\n 2.465653756576039,\n 2.7319287360858397,\n -0.4884548312194801\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}","type":"dataframe","variable_name":"df"},"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","
XY
00.5594460.712223
10.7614920.193319
20.2445321.534062
30.7716890.495752
40.3544721.937421
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"],"text/plain":[" X Y\n","0 0.559446 0.712223\n","1 0.761492 0.193319\n","2 0.244532 1.534062\n","3 0.771689 0.495752\n","4 0.354472 1.937421"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["# Specify a seed so the numbers can be reproduced\n","np.random.seed(1998)\n","# Specify size of dataset, randomly generate points\n","n = 100\n","x = np.array([np.random.random() for a in range(100)])\n","# Generate the true Y model with (normally distributed) noise (Y = -pi*x + e)\n","y = -np.pi*x + np.e\n","noise = np.random.normal(0,0.25,n)\n","y += noise\n","# Convert data into dataframe\n","df = pd.DataFrame({'X':x,'Y':y})\n","df.head()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":472},"collapsed":true,"executionInfo":{"elapsed":1028,"status":"ok","timestamp":1696454334469,"user":{"displayName":"Eric Guo","userId":"14148159081345199792"},"user_tz":240},"id":"p4pDM3PYCxv6","outputId":"aca17f03-d383-47fa-a229-096fb2c860d6"},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEfElEQVR4nO3dfXxT9d3/8XeKkIqjQWA0RaoiOqEWQVCwyLwFEbwY/NwYwxvUC3Ey8EJx1xR1Q+cNuul0lzBQnFOHiHNyM5BVuRn6QMu47aByswtkgtjWAdpAlVKa8/ujVyopTXKSnpyck7yej0f/aHLSfHPmzMfv93PjMQzDEAAAQAbKSvUCAAAAUoVACAAAZCwCIQAAkLEIhAAAQMYiEAIAABmLQAgAAGQsAiEAAJCxCIQAAEDGIhACAAAZi0AIAABkLAIhAI41ZMgQnXrqqaqsrDzhuaqqKuXl5alfv34KBoO2r+3FF1+Ux+PRK6+8csJzJSUlysrK0k9/+lPb1wUgPh5mjQFwqt27d6uwsFDDhw/X3Llzw56bMGGCXnjhBa1fv149e/a0fW2GYejSSy/V9u3btX37drVv316SVFtbq969eysQCGjr1q065ZRTbF8bAPPYEQLgWF26dNHUqVP1+uuv69133214fN26dZo1a5YmT56ckiBIkjwej55//nlVVVWF7fw8/fTTKisr0/Tp0wmCABdgRwiAox07dkx9+vRRdXW1ysrK1LJlS/Xt21dffPGFysrK1Lp16xNeU1tbq9zcXA0fPlx/+MMfwp4LBALq2LGjJk6cqKeeekqS9Nxzz2nWrFnavXu3vF6vunbtqsmTJ+v666+Pub4HHnhAjz/+uFatWqXTTz9d5513noYMGaK33nrLmhsAIKkIhAA43t///nf1799f9913nzp27Ki77rpLxcXFGjx4cMTXjB07VvPnz1dlZaVatWrV8Pirr76qm2++WevWrdOFF16o2bNn6/bbb9cPfvADDRo0SEeOHNHmzZt1yimn6Le//W3MtX399dcqLCxUy5YtdcYZZ6ikpETbtm3TaaedZslnB5BcBEIAXOHOO+/U888/L6/Xq2HDhp2QM9TYu+++q8GDB2vx4sX6j//4j4bHr732Wm3fvl27du2SJI0YMUI7d+5UWVlZwmsLvZckPfvss5o0aVLCfwuAvcgRAuAKjz32mNq3b6+srCw988wzMa+/8sor1aFDB73xxhsNj33xxRdatmyZRo0a1fBY27Zt9emnn2rdunUJr61du3bKyqr/1+nVV1+d8N8BYD8CIQCukJOTo3PPPVf5+fnKzc2Nef1JJ52k73//+1q0aJFqamokSfPnz1dtbW1YIHTvvffqW9/6lvr27atzzjlHEyZM0AcffGB6XXV1dbr99tvVqVMntW3bVv/1X/8V/4cDkDIEQgDS1o9+9CMdOnRIf/3rXyVJf/rTn9StW7ewSrPu3btrx44dmjdvngYMGKC33npLAwYM0NSpU029x29/+1tt2rRJ06dP12OPPably5fHPLYD4BzkCAFwjcsvv1z79+83nc8TDAbVuXNnXXbZZXruueeUl5enBx54QA899FDE1xw9elTXXXediouLdfjwYWVnZ0e8du/evSooKNBVV12lhQsXKhgMqqioSJ988ol27Nghn88X70cEYDN2hACkraysLP3gBz/Q4sWL9cc//lHHjh0LOxaTpAMHDoT93qpVKxUUFMgwDNXW1kb9+3feeacMw9Bzzz3X8H6zZs3S/v37df/991v7YQAkBTtCAFwj3h0hSfrggw80YMAAtWnTRmeeeaY2b94c9nyfPn3k9/t1ySWXKDc3V9u2bdP06dN19dVX6y9/+UvEv7tgwQJdd911evrppzV58uSw5yZNmqTp06drzZo1uuiii+L7kABsRSAEwDUSCYQMw9AZZ5yhvXv36tFHH9UDDzwQ9vwLL7yg1157TR999JEOHz6szp0767rrrtODDz6onJycJv/m4cOH1b17d3Xo0EHr169XixYtwp4/dOiQunXrJr/fr7Vr157wPADnIBACAAAZixwhAACQsQiEAABAxiIQAgAAGYtACAAAZCwCIQAAkLEIhAAAQMY6KdULcLpgMKjPPvtMbdq0kcfjSfVyAACACYZh6NChQ+rUqZOysiLv+xAIxfDZZ58pPz8/1csAAAAJ2Lt3rzp37hzxeQKhGNq0aSOp/kZG6jILAACcJRAIKD8/v+F7PBICoRhCx2E5OTkEQgAAuEystBaSpQEAQMYiEAIAABmLQAgAAGQsAiEAAJCxXBMIzZw5U+eff35D0nJRUZH++te/Rn3Nm2++qW7duik7O1s9evTQ0qVLbVotAABwA9cEQp07d9YTTzyhDRs2aP369bryyis1fPhwffTRR01e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1atX6/e//71KS0ttWGF6SeR+f/zxx1q5cqVuuOEGLV26VDt37tRPfvIT1dbWaurUqXYs27USud/XX3+99u/frwEDBsgwDB07dkx33HGH7r//fjuWnFEifU8GAgF9/fXXOvnkky17L3aEkFGeeOIJzZs3TwsWLFB2dnaql5NWDh06pJtuukmzZ89Whw4dUr2cjBAMBtWxY0e98MIL6tOnj0aNGqUHHnhAs2bNSvXS0tKqVav0+OOP63e/+502btyo+fPn6+2339YjjzyS6qWhGdgRaqYOHTqoRYsWqqysDHu8srJSfr+/ydf4/f64rsc3ErnfIU899ZSeeOIJLV++XOeff34yl5kW4r3Xu3bt0r/+9S8NGzas4bFgMChJOumkk7Rjxw517do1uYt2sUT+2c7Ly1PLli3VokWLhse6d++uiooKHT16VK1atUrqmt0skfv985//XDfddJNuu+02SVKPHj1UXV2t22+/XQ888ICysthbsEqk78mcnBxLd4MkdoSarVWrVurTp49WrFjR8FgwGNSKFStUVFTU5GuKiorCrpekZcuWRbwe30jkfkvSr371Kz3yyCMqLi7WhRdeaMdSXS/ee92tWzdt2bJFpaWlDT/f+973dMUVV6i0tFT5+fl2Lt91Evln+5JLLtHOnTsbAk5J+uc//6m8vDyCoBgSud9fffXVCcFOKAg1GNtpKVu/Jy1Pv85A8+bNM7xer/Hyyy8bW7duNW6//Xajbdu2RkVFhWEYhnHTTTcZ9913X8P1H3zwgXHSSScZTz31lLFt2zZj6tSplM/HId77/cQTTxitWrUy/vznPxvl5eUNP4cOHUrVR3CNeO91Y1SNxSfe+71nzx6jTZs2xsSJE40dO3YYS5YsMTp27Gg8+uijqfoIrhLv/Z46darRpk0b4/XXXzc+/vhj49133zW6du1q/PCHP0zVR3CNQ4cOGZs2bTI2bdpkSDJ+85vfGJs2bTI++eQTwzAM47777jNuuummhutD5fP//d//bWzbts2YMWMG5fNO99xzzxmnn3660apVK6Nv377GmjVrGp677LLLjJtvvjns+j/96U/Gd77zHaNVq1bGeeedZ7z99ts2r9jd4rnfZ5xxhiHphJ+pU6fav3AXivef7eMRCMUv3vv94YcfGv369TO8Xq9x1llnGY899phx7Ngxm1ftXvHc79raWuOhhx4yunbtamRnZxv5+fnGT37yE+OLL76wf+Eu87e//a3Jfw+H7u/NN99sXHbZZSe8plevXkarVq2Ms846y/jDH/6QlLV5DIP9PAAAkJnIEQIAABmLQAgAAGQsAiEAAJCxCIQAAEDGIhACAAAZi0AIAABkLAIhAACQsQiEAABAxiIQApAx6urq1L9/f1133XVhj1dVVSk/P18PPPBAilYGIFXoLA0go/zzn/9Ur169NHv2bN1www2SpDFjxugf//iH1q1bx7BSIMMQCAHIOP/zP/+jhx56SB999JHWrl2rkSNHat26derZs2eqlwbAZgRCADKOYRi68sor1aJFC23ZskV33nmnHnzwwVQvC0AKEAgByEjbt29X9+7d1aNHD23cuFEnnXRSqpcEIAVIlgaQkV566SW1bt1au3fv1qeffprq5QBIEXaEAGScDz/8UJdddpneffddPfroo5Kk5cuXy+PxpHhlAOzGjhCAjPLVV1/plltu0fjx43XFFVfo97//vdauXatZs2alemkAUoAdIQAZZdKkSVq6dKn+8Y9/qHXr1pKk559/Xj/96U+1ZcsWnXnmmaldIABbEQgByBjvvfeerrrqKq1atUoDBgwIe27w4ME6duwYR2RAhiEQAgAAGYscIQAAkLEIhAAAQMYiEAIAABmLQAgAAGQsAiEAAJCxCIQAAEDGIhACAAAZi0AIAABkLAIhAACQsQiEAABAxiIQAgAAGYtACAAAZKz/DxTPAzCqtbuQAAAAAElFTkSuQmCC","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# Let's plot the data!\n"]},{"cell_type":"markdown","metadata":{"id":"fmH3Uy_iQuvx"},"source":["## The Sklearn Pipeline\n","\n","1. Extract features + target\n","\n","2. Perform train-test split\n","\n","3. Instantiate your model\n","\n","4. Fit your model to the training data (model training)\n","\n","5. (Optional) Save your predictions -- useful if you need some accuracy metric against the known outputs\n","\n","6. Check accuracy"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":198,"status":"ok","timestamp":1696455111153,"user":{"displayName":"Eric Guo","userId":"14148159081345199792"},"user_tz":240},"id":"f5OnoOcfJuox","outputId":"cadaec84-fb91-4579-f2f7-f1457c330d5a"},"outputs":[{"name":"stdout","output_type":"stream","text":["score: 0.9365786839107105\n"]}],"source":["# Now let's train a linear regression model on our data (for now we will only train once, so we won't have a validation set)\n","\n","# Extract features and target\n","\n","# Split the data into a training set and test set using train_test_split\n","\n","# Instantiate linear regression model\n","\n","# Fit the linear regression model to our data\n","\n","# Save test set predictions\n","\n","# Print the R^2 value (how accurate was our model in predicting the y-values)?\n"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":472},"collapsed":true,"executionInfo":{"elapsed":210,"status":"ok","timestamp":1696455120770,"user":{"displayName":"Eric Guo","userId":"14148159081345199792"},"user_tz":240},"id":"qVSy0s6IwguT","outputId":"044cb932-cb27-457d-dd39-1279edb12ad3"},"outputs":[{"data":{"image/png":"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j0VtSbT6EJtdFUc9e/bEzJkzMWnSJDRp0gTx8fGIiYnRTLq+du2aVnXcqlUrrFq1CgsXLkTjxo2xbt06bNy4UefmfkRERGVJz549IYSAu7u7JnbixAlIkoQDBw5YLa/jyfd0eowKEgBS0rJxPPme5ZLSw672ObIG7nNERET27Pz586hfv75O/PHjx3BwcLBoLpvib2D06vhi2337dhN0a1KtVOcqF/scERERkfHq1asHIQT69eunFXd0dMSMGTMsmouXu6L4Rka0MxcWR0REROXAsmXLkJGRoRWbMGECJEnC/QdpFskhNLASfJUKFHY3PQmAr/LJzYiticURERFROeHm5oY/ztxE0JsTtOKVPCui78jxZj+/g0xCZNdgANApkPKfR3YNtvrNiFkcERERlRP5y+gfB7VBjQlb4ORVS/PainkzIUkSLly4YNYcIkJ8Mb9PM/gotYfOfJQKzO/TDBEh1r+ZLidkF4MTsomIqCxQqQWen75XZ7XY47TbuLHgXa1Y586d8ccff0CSzNeDo1ILHE++h9sZ2fByfzKUZsoeI07IJiIioiIVtozeUemFgI+2wvPF/yuQduzYAZlMhpiYGLPl4yCTEBZUGd2aVENYUGWrD6UVxOKIiIioHLidUfj+QgDgEfo6/Meug6vb/+2N9NJLL6FChQrIzMw0d3o2hcURERFROWDI8niZswK745OxY8cOTSwrKwtubm4WX/ZvTSyOiIiIygFjltF36tQJarUaXbp00byev+w/OTnZIvlaE4sjIiKicsDYZfSSJGHbtm06q9dq1aqF119/HWV5PReLIyIionKiJMvoa9euDSEEpk2bpolt2LABMpkM+/btM3vO1sCl/MXgUn4iIiprSrqMPiMjA5UrV0ZeXp4mVqVKFVy7dg0uLi7mTNloXMpPREREBivpMnp3d3fk5uZiy5YtmtidO3fg6uqK77//3lzpWhyLIyIiIjLKK6+8ApVKhRdffFETe//99yFJEv79918rZmYaLI6IiIjIaDKZDHv37sW5c+e04v7+/ujTp49dT9hmcUREREQlVq9ePQgh8Omnn2piK1euhEwmw5EjR6yYWclxQnYxOCGbiIjIMA8ePICnp6dWLCAgAElJSZDL5RbNhROyiYiIyOoqVqwIIQTWrVuniV29ehUKhQKLFi2yYmbGYXFEREREJvXGG2/g8ePH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9kRUcpyQTURmFxUVhffffx9KpRIRERHIycnByZMncf/+fYwbNw6zZ8+Gr68vmjZtCplMhrVr18LHx0ezsWLNmjWxZ88etG7dGnK5HJ6enjrnSE9Px6BBgzB+/Hg8++yzAICxY8diw4YNGDJkCLZs2VJofjVr1kSrVq0waNAgqFQqvPrqq5rXateujby8PHz//ffo2rUrjhw5ggULFhT5edu1a4cZM2Zg+fLlCAsLw4oVK5CQkICmTZsCANzd3fHhhx9i7NixUKvVeP7555GWloYjR47Aw8MD/fv3x6RJk9C8eXM0aNAAOTk52Lp1K+rXr2/spSeikrB2dUZEZc/TPSlCCLFy5UrRpEkT4ezsLDw9PUWbNm3E+vXrhRBCLFy4UDRp0kRUqFBBeHh4iPbt24vY2FjNsZs3bxa1a9cWjo6OIiAgQO85Bw4cKEJCQkROTo5W/J9//hGurq5i2bJlReY8b948AUD069dP57XZs2cLX19f4eLiIjp37iyWL19eZM+REEJMmjRJeHt7C6VSKcaOHStGjRql6TkSQgi1Wi3mzJkj6tatK5ycnETVqlVF586dxYEDB4QQT3qn6tevL1xcXESlSpVEt27dxOXLl4v8DERkGpIQTw2MExEREZVjnJBNREREVACLIyIiIqICWBwRERERFcDiiIiIiKgAFkdEREREBbA4IiIiIiqAxRERERFRASyOiIiIiApgcURERERUAIsjIiIiogJYHBEREREVwOKIiIiIqID/B3qRmJOk38wQAAAAAElFTkSuQmCC","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# Look at the output of our linear regression model vs the actual data (test set)\n","\n","# Plot Predictions\n","\n","# Plot Actual Data\n"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"collapsed":true,"executionInfo":{"elapsed":133,"status":"ok","timestamp":1696455130070,"user":{"displayName":"Eric Guo","userId":"14148159081345199792"},"user_tz":240},"id":"qCBvfUYhJuoy","outputId":"765645e4-ad12-41a1-95c9-f38ebc3f0f00"},"outputs":[{"name":"stdout","output_type":"stream","text":["Predicted slope: -3.161810933877257\n","Actual slope: -3.141592653589793\n"]}],"source":["# Look at the slope of our linear model vs the actual slope\n"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"collapsed":true,"executionInfo":{"elapsed":180,"status":"ok","timestamp":1696455149061,"user":{"displayName":"Eric Guo","userId":"14148159081345199792"},"user_tz":240},"id":"N0YrwHi_Juoy","outputId":"8b8fc5cc-71f1-40ab-9a80-3f4f2c232ff6"},"outputs":[{"name":"stdout","output_type":"stream","text":["Predicted y-intercept: 2.7462623201532548\n","Actual y-intercept: 2.718281828459045\n"]}],"source":["# Look at the y-intercept of our model vs the actual intercept\n"]},{"cell_type":"code","execution_count":3,"metadata":{"executionInfo":{"elapsed":142,"status":"ok","timestamp":1709602599569,"user":{"displayName":"Srivatsa Kundurthy","userId":"03839108747452750167"},"user_tz":300},"id":"kFmLuKC5Juox"},"outputs":[],"source":["# In the future: how to create a validation set (useful for the HW)\n","not_testx, test_x, not_testy, test_y = train_test_split(df[['X']], df['Y'], test_size=0.2, random_state=42)\n","train_x, valid_x, train_y, valid_y = train_test_split(not_testx, not_testy, test_size=0.2, random_state=42)"]}],"metadata":{"colab":{"provenance":[{"file_id":"1sW0kgM_e4ZO06g8R1CpEi1R5yXiVUzcH","timestamp":1664683083019}]},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.5"}},"nbformat":4,"nbformat_minor":0}