{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Train / Test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We'll start by creating some data set that we want to build a model for (in this case a polynomial regression):"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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BQUFTjfF83itc4fXOnd4rXMn315rVxbJAgAAb6MHBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQ8tSGDRtUXV2tsrIy+Xw+rVq1yukmeVZNTY2++tWvqrCwUIMHD9YVV1yhP//5z043y5OWLl2qM888M7aQ1fjx4/W73/3O6WZ5Xk1NjXw+n+bOnet0Uzxp0aJF8vl8cZdAIOB0s2xHQMlTra2tGj16tJYsWeJ0Uzxv/fr1mj17tjZu3Kg1a9bo888/17Rp09Ta2up00zzn1FNP1U9/+lNt3rxZmzdv1pQpU3T55Zdr+/btTjfNszZt2qRf/epXOvPMM51uiqeNHDlSjY2Nscu2bducbpLtXLnUPbJXVVWlqqoqp5uRF1avXh3387JlyzR48GDV1tbqggsucKhV3lRdXR33809+8hMtXbpUGzdu1MiRIx1qlXe1tLToxhtv1KOPPqq7777b6eZ4Wq9evfKi16QjelCAHAsGg5Kk4uJih1vibW1tbVqxYoVaW1s1fvx4p5vjSbNnz9aMGTN08cUXO90Uz6uvr1dZWZkqKip03XXX6aOPPnK6SbajBwXIoUgkonnz5un8889XZWWl083xpG3btmn8+PE6cuSIvvCFL2jlypUaMWKE083ynBUrVmjLli3atGmT003xvPPOO09PPfWUzjjjDH366ae6++67NWHCBG3fvl2DBg1yunm2IaAAOXTbbbfpvffe0xtvvOF0Uzzry1/+srZu3apDhw7pv/7rvzRz5kytX7+ekGKh3bt36/vf/75effVV9e3b1+nmeF7H4fhRo0Zp/PjxGj58uJ588knNmzfPwZbZi4AC5MicOXP04osvasOGDTr11FOdbo5n9enTR1/60pckSeecc442bdqkhx56SI888ojDLfOO2tpa7d27V2PHjo1d19bWpg0bNmjJkiUKh8Pq2bOngy30tgEDBmjUqFGqr693uim2IqAANotEIpozZ45WrlypdevWqaKiwukm5ZVIJKJwOOx0Mzzloosu6jSL5Fvf+pa+8pWv6I477iCc2CwcDuv999/X1772NaebYisCSp5qaWnRzp07Yz83NDRo69atKi4u1tChQx1smffMnj1bzzzzjF544QUVFhaqqalJkuT3+9WvXz+HW+ctd955p6qqqlReXq7m5matWLFC69at6zSTCtkpLCzsVEM1YMAADRo0iNoqG8yfP1/V1dUaOnSo9u7dq7vvvluhUEgzZ850umm2IqDkqc2bN2vy5Mmxn6PjmDNnztQTTzzhUKu8aenSpZKkSZMmxV2/bNkyzZo1K/cN8rBPP/1U//AP/6DGxkb5/X6deeaZWr16taZOnep004CMffLJJ7r++uu1b98+nXzyyRo3bpw2btyoYcOGOd00W/kikUjE6UYAAAB0xDooAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABjn/wObK4r6PJbIDwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"from pylab import *\n",
"import matplotlib.pyplot as plt\n",
"\n",
"np.random.seed(2)\n",
"\n",
"pageSpeeds = np.random.normal(3.0, 1.0, 100)\n",
"purchaseAmount = np.random.normal(50.0, 30.0, 100) / pageSpeeds\n",
"\n",
"\n",
"scatter(pageSpeeds, purchaseAmount)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we'll split the data in two - 80% of it will be used for \"training\" our model, and the other 20% for testing it. This way we can avoid overfitting."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"trainX = pageSpeeds[:80]\n",
"testX = pageSpeeds[80:]\n",
"\n",
"trainY = purchaseAmount[:80]\n",
"testY = purchaseAmount[80:]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's our training dataset:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter(trainX, trainY)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And our test dataset:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Tum5557Tt771Lb3yyitZrjQzUu1vjFPHt7u7W1u3btVbb72lrq4uffrpp6qvr9fFixen/IyTxzid/sY4cYwXLFig7373uzp+/LiOHz+uBx98UA8//LDOnj2btL2Tx1ZKvb8xThzba/X29mrv3r1avHjxdds5fYxjptvfmBmPscmx5cuXmyeeeCLh2J133mmeffbZpO3feOMNI8lcuHDBQnXZJckcOnToum22bdtm7rzzzoRjmzZtMvfee28WK8uO6fTXTeNrjDFDQ0NGkunu7p6yjZvGeDr9ddsY33LLLebv//7vk55z09jGXK+/bhnbkZERU1lZabq6usyqVavMU089NWVbN4xxKv3N1Bjn9M7H5cuXdeLECdXX1yccr6+v17Fjx6772SVLligUCmnNmjV64403sllmTr355puT/nx+7/d+T8ePH9f//u//5qiq7HPL+EajUUlSWVnZlG3cNMbT6W+M08d4fHxcBw8e1MWLF1VbW5u0jZvGdjr9jXH62G7dulVf+9rX9NBDD92wrRvGOJX+xsx0jHP6xXIfffSRxsfHFQgEEo4HAgFFIpGknwmFQtq7d6+WLl2qsbEx/eM//qPWrFmjI0eO6Ktf/aqNsq2KRCJJ/3w+/fRTffTRRwqFQjmqLDvcNL7GGD399NO6//77VV1dPWU7t4zxdPvr9DE+c+aMamtrNTo6qs997nM6dOiQqqqqkrZ1w9im0l+nj60kHTx4UCdPnlRvb++02jt9jFPtb6bGOC++1dbj8SS8N8ZMOhZzxx136I477oi/r62t1eDgoP76r//aMX+5U5XszyfZcTdw0/h+85vf1Ntvv61f/vKXN2zrhjGebn+dPsZ33HGHTp8+rf/5n//RK6+8oo0bN6q7u3vKC7LTxzaV/jp9bAcHB/XUU0/p8OHD8vl80/6cU8c4nf5maoxzOu3y+c9/XsXFxZPucgwNDU1Kktdz77336p133sl0eXkhGAwm/fOZNWuW5s2bl6Oq7HLi+D755JN67bXX9MYbb2jBggXXbeuGMU6lv8k4aYxnz56tL37xi1q2bJlaW1t111136YUXXkja1g1jm0p/k3HS2J44cUJDQ0NaunSpZs2apVmzZqm7u1t/+7d/q1mzZml8fHzSZ5w8xun0N5l0xjindz5mz56tpUuXqqurS3/wB38QP97V1aWHH3542j/n1KlTeX9rK121tbXq6OhIOHb48GEtW7ZMN910U46qsstJ42uM0ZNPPqlDhw7pyJEjqqiouOFnnDzG6fQ3GSeN8bWMMRobG0t6zsljO5Xr9TcZJ43tmjVrdObMmYRjf/7nf64777xTzzzzjIqLiyd9xsljnE5/k0lrjGf0uGoGHDx40Nx0003mRz/6kenv7zeNjY3m5ptvNv/5n/9pjDHm2WefNY8//ni8/fe//31z6NAh86tf/cr09fWZZ5991kgyr7zySq66kJKRkRFz6tQpc+rUKSPJ7N6925w6dcq89957xpjJ/X333XfN3Llzzbe//W3T399vfvSjH5mbbrrJ/PM//3OuupCSVPvr9PHdvHmz8fv95siRIyYcDsdfn3zySbyNm8Y4nf46eYy3b99ujh49agYGBszbb79tnnvuOVNUVGQOHz5sjHHX2BqTen+dPLZTuXb1h9vG+Fo36m+mxjjn4cMYY/7u7/7O3H777Wb27NmmpqYmYZnexo0bzapVq+Lvn3/+ebNo0SLj8/nMLbfcYu6//37zs5/9LAdVpye2TOna18aNG40xk/trjDFHjhwxS5YsMbNnzza/8zu/Y9rb2+0XnqZU++v08U3WV0nm5Zdfjrdx0xin018nj/E3vvGN+P+rbr31VrNmzZr4hdgYd42tMan318ljO5VrL8ZuG+Nr3ai/mRpjjzH/92QMAACABTnf4RQAABQWwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsIrwAQAArCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACr/j/lMIqrWhtwlwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter(testX, testY)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we'll try to fit an 8th-degree polynomial to this data (which is almost certainly overfitting, given what we know about how it was generated!)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"x = np.array(trainX)\n",
"y = np.array(trainY)\n",
"\n",
"p4 = np.poly1d(np.polyfit(x, y, 8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's plot our polynomial against the training data:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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wEAgIUG+dpBXkK3Csm7dOsyZMwcff/wxBg0ahE8++QQpKSk4evQo2rdvL1ezfJoSlqAnxzgzoNPewatSdxPa++mf3ZUyaN9eXAH3rbeA//ovYOxYQKv1fDt+/128vvVWWaZZk3fRCIIgS8dwv3790Lt3bywxLWgEoEuXLrj//vuRlpZmcazRaITRaDR/XVJSgvbt2yMvLw8REREea7OvqKkVcPD0VVwqv442LYKRdEsrVlYULv1oAf723e+4WFr3dxATocWrKbdjVFe9xXGp6w416vYz/eu+90hP8/E1tQKS389AYanRZjdhdIQWW18cIunvh1LaoTrl5eI+QxcvAm++KW6Q6Gn/+7/AK6+IgWnNGs+/P3lcaWkp4uLiUFxcDJ1O59iTBRkYjUbB399fWL9+vcX9f/7zn4W777670fHz588XIH645IUXXnjhhRdevPxy8uRJh7ODLDW4y5cvo6amBjExMRb3x8TEoKCgoNHx8+bNQ2pqqvnr4uJixMfH4+zZs44nNB9nSq+sPjXGn41t/NnYxp+NbfzZWMefi22mHpLISMcneMjaaahpMDJdEIRG9wGAVquF1kr/qk6n4y+DDREREfzZ2MCfjW382djGn41t/NlYx5+LbX5+js/5kWWWUFRUFPz9/RtVUwoLCxtVXYiIiIhkCSxBQUFISkpCenq6xf3p6ekYOHCgHE0iIiIiBZOtSyg1NRWPPfYY+vTpgwEDBmDp0qU4e/YsnnnmmWafq9VqMX/+fKvdRGrHn41t/NnYxp+NbfzZ2MafjXX8udjmys9GtmnNgLhw3DvvvIP8/HwkJibi/fffx9133y1Xc4iIiEihZA0sRERERPbg5odERESkeAwsREREpHgMLERERKR4DCxERESkeF4ZWD7++GMkJCQgODgYSUlJ+Omnn+Rukux27tyJcePGITY2FhqNBhs3bpS7SYqRlpaGO++8E+Hh4YiOjsb999+P48ePy90sRViyZAl69OhhXpFzwIAB+O677+RuluKkpaVBo9Fgzpw5cjdFdgsWLIBGo7G46PX65p+oEufPn8fUqVPRunVrhIaG4o477sDBgwflbpbsbrnllka/NxqNBrNmzbL7NbwusKxbtw5z5szB66+/jl9//RV33XUXUlJScPbsWbmbJquKigr07NkTixcvlrspipORkYFZs2Zh7969SE9Px40bN5CcnIyKigq5mya7du3a4W9/+xsOHDiAAwcOYPjw4bjvvvtw5MgRuZumGPv378fSpUvRo0cPuZuiGN26dUN+fr75cvjwYbmbpAhXr17FoEGDEBgYiO+++w5Hjx7Fu+++i5YtW8rdNNnt37/f4nfGtHDsww8/bP+LOLPbspz69u0rPPPMMxb33X777cKrr74qU4uUB4CwYcMGuZuhWIWFhQIAISMjQ+6mKFKrVq2Ef/7zn3I3QxHKysqETp06Cenp6cKQIUOEF154Qe4myW7+/PlCz5495W6GIr3yyivC4MGD5W6GV3jhhReEjh07CrW1tXY/x6sqLFVVVTh48CCSk5Mt7k9OTsbu3btlahV5m5KSEgBwardQX1ZTU4O1a9eioqICAwYMkLs5ijBr1iyMHTsWI0eOlLspipKTk4PY2FgkJCRg0qRJOHXqlNxNUoTNmzejT58+ePjhhxEdHY1evXrh008/lbtZilNVVYVVq1bhiSeesLrhsS1eFVguX76MmpqaRhskxsTENNpIkcgaQRCQmpqKwYMHIzExUe7mKMLhw4fRokULaLVaPPPMM9iwYQO6du0qd7Nkt3btWmRmZiItLU3upihKv3798Pnnn+P777/Hp59+ioKCAgwcOBBFRUVyN012p06dwpIlS9CpUyd8//33eOaZZ/DnP/8Zn3/+udxNU5SNGzeiuLgY06dPd+h5su0l5IqGiUwQBIdSGqnX7Nmz8dtvv2HXrl1yN0UxbrvtNmRlZaG4uBj/+c9/MG3aNGRkZKg6tOTl5eGFF17A1q1bERwcLHdzFCUlJcV8u3v37hgwYAA6duyIlStXIjU1VcaWya+2thZ9+vTBokWLAAC9evXCkSNHsGTJEjz++OMyt045li1bhpSUFMTGxjr0PK+qsERFRcHf379RNaWwsLBR1YWooeeffx6bN2/Gjz/+iHbt2sndHMUICgrCrbfeij59+iAtLQ09e/bEhx9+KHezZHXw4EEUFhYiKSkJAQEBCAgIQEZGBv7xj38gICAANTU1cjdRMcLCwtC9e3fk5OTI3RTZGQyGRkG/S5cuqp8UUt+ZM2ewbds2PPnkkw4/16sCS1BQEJKSksyji03S09MxcOBAmVpFSicIAmbPno3169dj+/btSEhIkLtJiiYIAoxGo9zNkNWIESNw+PBhZGVlmS99+vTBlClTkJWVBX9/f7mbqBhGoxHHjh2DwWCQuymyGzRoUKMlE/744w/Ex8fL1CLlWb58OaKjozF27FiHn+t1XUKpqal47LHH0KdPHwwYMABLly7F2bNn8cwzz8jdNFmVl5fjxIkT5q9zc3ORlZWFyMhItG/fXsaWyW/WrFlYs2YNNm3ahPDwcHOFTqfTISQkRObWyeu1115DSkoK4uLiUFZWhrVr12LHjh3YsmWL3E2TVXh4eKMxTmFhYWjdurXqxz7NnTsX48aNQ/v27VFYWIi33noLpaWlmDZtmtxNk92LL76IgQMHYtGiRZg4cSL27duHpUuXYunSpXI3TRFqa2uxfPlyTJs2DQEBTsQPiWYsSep//ud/hPj4eCEoKEjo3bs3p6cKgvDjjz8KABpdpk2bJnfTZGft5wJAWL58udxNk90TTzxh/ltq06aNMGLECGHr1q1yN0uROK1Z9MgjjwgGg0EIDAwUYmNjhQkTJghHjhyRu1mK8dVXXwmJiYmCVqsVbr/9dmHp0qVyN0kxvv/+ewGAcPz4caeerxEEQXBPdiIiIiKShleNYSEiIiJ1YmAhIiIixWNgISIiIsVjYCEiIiLFY2AhIiIixWNgISIiIsVjYCEiIiLFY2AhIiIixWNgISIiIsVjYCEiIiLFY2AhIiIixfv/AV8ur0phVe8VAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"xp = np.linspace(0, 7, 100)\n",
"axes = plt.axes()\n",
"axes.set_xlim([0,7])\n",
"axes.set_ylim([0, 200])\n",
"plt.scatter(x, y)\n",
"plt.plot(xp, p4(xp), c='r')\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And against our test data:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"testx = np.array(testX)\n",
"testy = np.array(testY)\n",
"\n",
"axes = plt.axes()\n",
"axes.set_xlim([0,7])\n",
"axes.set_ylim([0, 200])\n",
"plt.scatter(testx, testy)\n",
"plt.plot(xp, p4(xp), c='r')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Doesn't look that bad when you just eyeball it, but the r-squared score on the test data is kind of horrible! This tells us that our model isn't all that great..."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.3001816861284148\n"
]
}
],
"source": [
"from sklearn.metrics import r2_score\n",
"\n",
"r2 = r2_score(testy, p4(testx))\n",
"\n",
"print(r2)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"...even though it fits the training data better:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.6427069514693458\n"
]
}
],
"source": [
"from sklearn.metrics import r2_score\n",
"\n",
"r2 = r2_score(np.array(trainY), p4(np.array(trainX)))\n",
"\n",
"print(r2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you're working with a Pandas DataFrame (using tabular, labeled data,) scikit-learn has built-in train_test_split functions to make this easy to do.\n",
"\n",
"Later we'll talk about even more robust forms of train/test, like K-fold cross-validation - where we try out multiple different splits of the data, to make sure we didn't just get lucky with where we split it."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Activity"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Try measuring the error on the test data using different degree polynomial fits. What degree works best?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:base] *",
"language": "python",
"name": "conda-base-py"
},
"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.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}