码云 Gitee IDE 全新上线——支持 Git 管理的轻量在线编码环境
Watch Star Fork

Cynhard85 / MachineLearningTutorial

加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
暂无描述
一键复制 编辑 Web IDE 原始数据 按行查看 历史
机器学习 - 过拟合与欠拟合.ipynb 190.96 KB
liuxinyang 提交于 2018-07-06 16:43 . modify names
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 过拟合与欠拟合"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [],
"source": [
"m = 16\n",
"train_size = 12\n",
"test_size = m - train_size\n",
"np.random.seed(42)\n",
"\n",
"XMin = 0\n",
"XMax = 8\n",
"\n",
"X = np.linspace(XMin, XMax, m).reshape(-1, 1)\n",
"y = 0.8 * X ** 2 + 2 * X + 4 + 2.5 * np.random.randn(m, 1)\n",
"X_train = X[0:train_size]\n",
"y_train = y[0:train_size]\n",
"X_test = X[train_size:]\n",
"y_test = y[train_size:]"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAFACAYAAADgTkhVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xt4VfWd7/H3l1wgBFCQkHBAbh2gFOgETY1VpwrYajoIfVrtVFDBxyM+1ePY1h4vnDPVsfZ4QYVePNOxSMscraBQq1UjtXipWgxEkqkoDFigFggEL0VJASH5nj/WIiYQkp1k39ben9fz7Gftvfbaa32JkQ/rt777t8zdERERSXc9Ul2AiIhILBRYIiISCQosERGJBAWWiIhEggJLREQiQYElIiKRoMASEZFIUGCJhMzsF2bm4eOwmb1vZqvN7BYzG9DJfb1tZrcmqNSOjn3YzOak4tgiiaTAEmntZWAwMAz4B+BnwMXAm2Y2JpWFiWQ7BZZIax+7+y533+nub7r7YuA04G/ATwHM7BQzqzSzejPbZ2Zrzez8IzswsxeBTwG3tDhjG2GBn5nZn8xsv5ltMbP/Y2Y9W3x2qJmtMLN3W2zzP1u8n2tmt5rZVjM7YGZvmtlVLd7fBuQAPz9y7AT/vESSJjfVBYikO3f/0Mz+DbjbzIqAfsBS4HrgMHAZ8KSZTXD3TcBXgdeBFcA94W72AAbsBmaGy88C/w4cAm4Jt/u/QG/gXOCvwEigpEU5i4BTgKuAzQRh+u9mdtjdHwQ+B9SFtS2L709CJLUUWCKxWU8QOCPd/cWj3vvfZnYBcBHwA3d/38wagX3uvuvobVs832ZmnwKu5pPAGg487u61R7Y5srGZjSQIx8+4+8Zw9VYzGwtcCzzo7nvMDGBvG8cWiTQFlkhsLFx6eJb1r8AUgrOfXKAXQdi0vxOzK4H/DowACsPPthyaX0hwxlQBvAg87e6/D98rC+uoDkPpiFygsSt/KJEoUWCJxGYC4MAW4D8ImjJuALYC+wmGCPPb24GZXQTcD9wEvAR8SHhWdmQbd/+5mT0LnA9MBirN7HF3v4RPgu0MgmtqLelalWQ8BZZIB8ysH/BNYJW7v2dmXwBucPcnw/cLgVEEw4ZHfEzQ/NDSF4Aad7+vxb5HHH08d68Dfk7QOPEM8IiZXU1wXQxgmLs/1U7JbR1bJPIUWCKt5ZtZCcHQW3/gdIIzqZ4EoQXwX8AsM3uFIBhu49iA2AqcaWbDCM6G3g8/d4WZzSAIt2kEDRrNzOwnwDPhtr3C9/8CfBQ2fywGfmZmNwCrCYYVTwWK3P2uFseebGaVBF2P73b/xyKSemprF2ntHwi67P4CvArMBX4JTHD3t8NtLif4f2cN8GvgWWDtUfu5BTiBIHj2EAwh/jvw/wjOnmqAcuDWoz5nBNex1gO/JwikCv/kTqtzgQXA/wLeAlYBswmGKo+4niDEtobHFskIpjsOi4hIFOgMS0REIkGBJSIikaDAEhGRSFBgiYhIJCiwREQkEpL6PayBAwf6iBEjknlIERFJY6+//vq77l4Uy7ZJDawRI0ZQXV2dzEOKiEgaM7M/x7qthgRFRCQSFFgiIhIJCiwREYkEBZaIiESCAktERCIhrW4v8uGHH1JfX8+hQ4dSXYqkoby8PAYNGkS/fv1SXYqIpECHgWVmY4FlLVaNAr5HcNfVZQS3+t4GfN3dP+hqIR9++CG7d+9myJAhFBQUcNQtwCXLuTv79+9nx44dAAotkSzUYWC5+38BpQBmlgPsAB4nuM33Kne/08xuCl/f2NVC6uvrGTJkCL179+7qLiSDmRm9e/dmyJAh7Ny5U4ElkiIl95Swu2H3MeuLC4vZ9d1dCT12Z69hTQX+5O5/BmYAS8L1S4CvdKeQQ4cOUVBQ0J1dSBYoKCjQkLFICrUVVu2tj6fOBtY3gEfC58XuXgcQLgd1txgNA0pH9Dsikr1iDiwzywemA4915gBmNtfMqs2ses8e3a1bRES6pjNnWBXAOnc/ct6328wGA4TL+rY+5O4PuHuZu5cVFcU0v6G0sHHjRsys03MwlpSUcM899ySoKhGR5OtMYF3MJ8OBAE8Cs8Pns4En4lVUlJhZu4/uzk4/evRo6urqKC0t7dTn3njjDa6++upuHTtWW7Zs4ZJLLmHo0KH07NmTwYMH86UvfYkXX3wx5n0cPnwYM2Pp0qWJK1REIi2m72GZWW/gi8BVLVbfCTxqZlcA7wAXxb+89FdXV9f8fM2aNcyYMYM1a9Zw8sknA5CTk9Pm5z7++GPy8/M73H9OTg4lJSWdritZZ7MHDhxg6tSpjBkzhmXLljF06FB27drF888/z3vvvZeUGkQkeYoLi4/bJZhw7p60x6mnnurH89Zbbx33vc44fNj9N79xv+22YHn4cFx2G5OXX37ZAd+6desx7xUXF/utt97qV155pffv39/POussd3efP3++T5w40Xv37u2DBw/2WbNm+e7du5s/t2HDBgd87dq1rV6vWLHCzz//fC8oKPBPfepTvnTp0mOON3/+/Favb7/9dr/66qv9hBNO8OLiYr/pppu8sbGxeZt9+/b55Zdf7n379vX+/fv7tdde69/5znd8/Pjxx/0zr1692gHfvHlzuz+bgwcP+rx583zYsGHeq1cvHz9+vC9evLhVfUDzo2fPnsfdV7x+V0Qk9YBqjzFDMmpqpsZGOO88uPhiuOWWYHneecH6dHDvvfcyfPhwqqqqeOCBBwDo0aMHCxcuZP369Tz22GNs2rSJSy+9tMN93XjjjVx55ZX88Y9/5IILLuCyyy7jz39u/7Yy9957L6NGjWLt2rXMnz+fu+++m2XLPvlO+Le//W1WrlzJ0qVL+cMf/kBeXh6LFi1qd58lJSWYGY899li77eaXXXYZlZWVLF68mLfeeot58+bxz//8zzz88MMA1NTUAPDTn/6Uurq6Dv8sIpKFYk22eDwSfYb1m9+49+njDp88+vQJ1idDR2dYX/7ylzvcxx/+8AcH/N1333X3459h3X///c2fOXjwoOfn5/svfvGLVsc7+gzroosuanWss88+2+fMmePu7u+//77n5ub6Qw891Gqb0tLSds+w3N0XLlzoBQUF3rt3bz/zzDP95ptv9nXr1jW/f6TmLVu2tPrczTff7OXl5e7ufujQIQf8kUceaf8H5DrDEskkZOsZVk0NNDS0XtfQALW1qannaKeddtox6373u9/xxS9+kZNPPpm+ffty7rnnAnR4htGyCSM/P5+BAweye3f7X9w7unFjyJAhzZ/ZtGkThw8f5vTTT2+1zdGv23Ldddexe/duli1bxpQpU3juuecoKyvjhz/8IQBr164FYOLEifTp06f5cd9997F58+YO9y8iAhk2W/ukSVBY2HpdYSF0ssEuYQqPKu7tt99m2rRpjB07lmXLllFdXc1jjwVfc/v444/b3dfRDRtmRlNTU7c/09Uv5vbt25dp06Zx2223sXbtWmbOnMm8efNoamqiqakJM2Pt2rXU1tY2P9avX98cZiIiHUmr2dq7q6ICysuhqio4syosDF5XVKS6srZVVVVx6NAhFi5c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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1ab854a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(7, 5))\n",
"\n",
"plt.plot(X_train, y_train, 'b.', markersize=10, label=\"Training Set\")\n",
"plt.plot(X_test, y_test, 'gs', label=\"Test Set\")\n",
"plt.legend(loc='upper left', fontsize='x-large')\n",
"plt.title(\"Dataset\", fontsize='x-large')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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NMaNG0doaChbt26ld+/enDp1iuHDhwPw8MMPs2HDBiZPnkytWrVYu3YtjzzyCAULFuShhx4CIDw8nOXLl6f7Z42MjOSmm25K83vHjh0DoHTp0pn67yciPko5nKdyOCEhgU8++YTY2NhL5rT4oZQZCDt22AZCOv/IER+lLM5TWZyWM2fOsG7dOnr37n3e/e3atePRRx8lMTGRAB1RmDVqInid481lP2FhYSYqKirN723dupV69eqdf2ceCcy4uDguv/xyJkyYQM+ePVPvDwsL4+jRo+zYsYNq1aoxcODA84Jj2bJltGjRgsOHDxMUFMRll13GpEmTUsMLoGnTphw8eJAdO3YAtus6b9489uzZQ0hICGCXT5UuXZq5c+fSrl271Od+8MEH9OvXj6NHj/L7779To0YNtmzZQt26dVMfM2zYMObOncvG5P/Of/31FydPnkz3z1upUiWKFCly0f2JiYncdtttHD58mNWrV1OgQO4sdEnzZ0UkGxzHWW+MSWvadr6TXg5DGn+/lMN5IocXLFjA/fffz8mTJylevDgzZswgIiLC4/9+WaEsziPyUANBWWzpmjjvZjHArl27qF69OsuXL6d58+ap9+/du5dKlSqxaNEi2rZtm3r/woULiYiI4O+//76oSZIR5XCy4GDo3RveeMPtSvI8T3PYt1ciZLLz6ZbffvuN06dPc8MNN5x3f/PmzVmwYAExMTHs3r2bp556imeeeSb1+ykNnB07dhAUFMSZM2do2rTpea/RrFkzvvjii/Puq1evXmpYAvz888+cPHmSjh074jhO6v2JiYmcOnWKmJgYoqKiMMYQFnb+z0RCQsJ5Xc9KlSpl6b9BYmIiXbt25ddff2XZsmW51kAQES9TDueJHL711lvZuHEjR44cYfbs2XTt2pVvvvmG6667LtOvJflIHmogSAaUxXkii7Pj3HolExITIT5eKxG8zLebCHlESvBd6i9/UlISAG+++Sa33nrrRd+vXLkyv/zyS7qvca7g4OA0X3/27NnUrl37osdfdtllqY9ZuXIlRYsWPe/7575nVpZunTlzhk6dOrFp0yaWLl1K5cqVM/wziIjkJH/P4eDg4NS9wtdffz2bNm1i5MiRzJw5M8M/i+RT+/bZuQc7d6qBIF7j71mcntKlS1OwYEH2799/3v0HDhygUKFClCpVyqPXkQvExtpbNRG8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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1a5d4ac8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"thetas = []\n",
"degrees = (2, 3, 10)\n",
"\n",
"# 计算 theta\n",
"for degree in degrees:\n",
" X_b = np.ones([train_size, 1])\n",
" for p in range(degree-1):\n",
" X_b = np.column_stack([X_b, X_train**(p+1)])\n",
" theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)\n",
" thetas.append(theta)\n",
"\n",
"# 绘图\n",
"plt.figure(figsize=(6*len(thetas), 4))\n",
"for index, degree in zip(range(len(thetas)), degrees):\n",
" X_plot = np.linspace(XMin, XMax, 1000)\n",
" X_b_plot = np.ones([1000, 1])\n",
" for p in range(degree-1):\n",
" X_b_plot = np.column_stack([X_b_plot, X_plot**(p+1)])\n",
" plt.subplot(1,len(thetas),index+1)\n",
" plt.plot(X_train, y_train, 'b.', markersize=10, label=\"Training Set\")\n",
" y_plot = X_b_plot.dot(thetas[index])\n",
" plt.plot(X_plot, y_plot, 'r-', label=\"degree={}\".format(degree))\n",
" plt.legend(loc='upper left', fontsize='x-large')\n",
" plt.ylim(-5,70)\n",
" \n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABBEAAAD8CAYAAAAhbjwkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3XmcjeX/x/HXbWxjRsY6tsqWJZGdUrZIJEspLYoiUURSlkTWyvorISqtUtGiZAmlaLGvGRHJNtZsM5YxM9fvj2vM1zBjzmznPmfm/Xw8zuPMOXPOfX9M493tc67FMcYgIiIiIiIiIpKcbG4XICIiIiIiIiL+QU0EEREREREREfGImggiIiIiIiIi4hE1EURERERERETEI2oiiIiIiIiIiIhH1EQQEREREREREY+oiSAiIiIiIiIiHlETQUREREREREQ8oiaCiIiIiIiIiHgkuzdPVqhQIVOqVClvnlJEJFlr1649aowp7HYd3qAcFhFfpSwWkTTZvh1iY6FiRbcr8Vue5rBXmwilSpVizZo13jyliEiyHMf51+0avEU5LCK+SlksImlSvz4EBsKSJW5X4rc8zWFNZxARERERERH/dvasbSJIhlMTQURERERERPybmgheoyaCiIiIiIiI+Dc1EbxGTQQRERERERHxb2fOQJ48bleRJaiJICIiIiIiIv5NIxG8xqu7MyTn1KlTHD58mAsXLrhdiviIoKAgSpYsSbZs6neJeINyWC6XI0cOihQpwjXXXON2KSJZhrJYLqdrYg+oieA1PtNEOHXqFIcOHaJEiRIEBgbiOI7bJYnLYmNj2b9/P0ePHqVIkSJulyOS6SmH5XLGGM6ePcv+/fsB1EgQ8QJlsVxO18QeuHABYmLURPASn2llHT58mBIlSpAnTx6FpQCQLVs2QkNDOXnypNuliGQJymG5nOM45MmThxIlSnD48GG3yxHJEpTFcjldE3vgzBl7ryaCVyTbRHAcp4LjOBsuuZ1yHKeP4zgFHMdZ7DjOjrj7/Gkp5MKFCwTqP7pcJkeOHERHR7tdhojrvJHFymFJSmBgoIZVS5ana2Jxk66Jk3H2rL3XwopekWwTwRjzlzGmmjGmGlATOAN8DQwAlhpjbgCWxj1OE3Vb5XL6nRCxvJXF+jsnidHvhYiuicVd+p1IxsUmghpwXpHSNRHuAHYaY/51HKcN0Cju+Q+BZUD/9CtNRMQzRccV5VDkoSueDw0K5WC/gy5UlOGUxSLiU5TDymERV6mJAHgvi1O6JsKDwKyLtRhjwgHi7rXKRzp78MEHad++fYreU69ePfr165dBFYn4psTC8mrPZwLKYi9RDot4RjmsHM5IymJJVmSkvQ8KcrcOl3kriz1uIjiOkxNoDcxOyQkcx+nmOM4ax3HWHDlyJKX1+TTHca5669y5c5qOP23aNN59990UvWf+/PkMHTo0Tef1xOnTp3nxxRcpW7YsuXPnpnDhwtx+++3MmTPH42Ns27YNx3HYsmVLBlYqkrmkJouVw6mnHBaRy+ma+ErKYmWx69RE8KqUTGdoAawzxlxsYxxyHKeYMSbccZxiQKLLNhtjpgPTAWrVqmXSVK2PCQ8Pj/963rx5PPnkkwmeS2pRnAsXLpAjR45kj58vX74U11SgQIEUvyc1unTpwsaNG5k0aRI33ngjx44d448//uDYsWNeOb9IFpbiLFYOX0k5LCJpoGviyyiLlcWuUxPBq1IyneEh/jdsC+BboFPc152AuelVVGrFxMC8eTBihL2PicnY8xUtWjT+FhIScsVz+fLli+8szp49m4YNG5I7d24+/PBDDh06RIcOHeK38LnpppuYOXNmguNfPnSrXr16PPfcc7zwwgsUKFCAokWLMmjQIIwxCV5z6dCtokWL8vrrr/PEE0+QN29err32Wt58880E59m6dSv169cnd+7c3HjjjSxevJjs2bPz2WefJfrnNsYwb948Xn75ZVq2bEmpUqWoWbMmzzzzDE899VT862JjYxk1ahSlS5cmMDCQqlWr8sUXXwBw7tw5KlWqBECVKlVwHIe77rorNf8ZRLIaZfEllMPKYREXKIcvoyxWFrvuYhNBuzN4hUdNBMdx8gDNgK8uefo1oJnjODvivvda+pfnuZgYaN4cHnoIhg61982bZ3xoemrAgAE899xzhIWF0bJlS86ePUu9evX4/vvv2bJlCz169KBTp06sWLHiqseZMWMG+fLlY+XKlYwfP57XX3+db7755qrvGTduHHXq1GH9+vX07t2b3r17s27dOgCio6Np06YNefPmZdWqVUyfPp1BgwYRGxub5PEcx6FIkSLMnz+f06dPJ/m6F154gU8//ZRp06axdetWnn/+eTp16sSSJUvInTs3y5cv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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1aa2cd30>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6*len(thetas), 4))\n",
"for index, degree in zip(range(len(thetas)), degrees):\n",
" X_plot = np.linspace(XMin, XMax, 1000)\n",
" X_b_plot = np.ones([1000, 1])\n",
" for p in range(degree-1):\n",
" X_b_plot = np.column_stack([X_b_plot, X_plot**(p+1)])\n",
" plt.subplot(1,len(thetas),index+1)\n",
" plt.plot(X_train, y_train, 'b.', markersize=10, label=\"Training Set\")\n",
" plt.plot(X_test, y_test, 'gs', label=\"Test Set\")\n",
" y_plot = X_b_plot.dot(thetas[index])\n",
" plt.plot(X_plot, y_plot, 'r-', label=\"degree={}\".format(degree))\n",
" plt.legend(loc='upper left', fontsize=14)\n",
" plt.ylim(-5,75)\n",
" \n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1a8971d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"train_mses = []\n",
"test_mses = []\n",
"for degree in range(0, 10):\n",
" X_b = np.ones([train_size, 1])\n",
" X_train_b = np.ones([train_size, 1])\n",
" X_test_b = np.ones([test_size, 1])\n",
" for p in range(degree-1):\n",
" X_b = np.column_stack([X_b, X_train**(p+1)])\n",
" X_train_b = np.column_stack([X_train_b, X_train**(p+1)])\n",
" X_test_b = np.column_stack([X_test_b, X_test**(p+1)])\n",
" theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)\n",
" y_train_pred = X_train_b.dot(theta)\n",
" train_mse = np.mean(np.square(y_train_pred - y_train))\n",
" train_mses.append(train_mse)\n",
" y_test_pred = X_test_b.dot(theta)\n",
" test_mse = np.mean(np.square(y_test_pred - y_test))\n",
" test_mses.append(test_mse)\n",
"\n",
"degrees_plot = range(0, 10)\n",
"plt.plot(degrees_plot, train_mses, 'rs-')\n",
"plt.plot(degrees_plot, test_mses, 'b.-')\n",
"plt.xlabel(\"Degrees\")\n",
"plt.ylabel(\"MSE\")\n",
"plt.ylim(0,100)\n",
"plt.xticks(range(1,10))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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bVu3Pq+9//771j3Nqa1bt84C9r333rOXX365LVq0qJ04caLdu3ev7datm61cubItXry4vfDCC+3bb7+dat+bb77Z3njjjcmXmzVrZh966CH7yCOP2LJly9rY2Fg7ePBgm5SUlGqbAQMGJF+OjY21w4YNs3fddZeNjo62cXFxdvTo0anuZ82aNfayyy6zRYsWtXXr1rVfffWVjYiIsNOnT0/3sSYlJdnixYvbt956K9PnJDEx0T799NO2evXqtlixYrZBgwb23XfftdZae/z4cQukWtq3b5/hbQXi9RFQvXpZGxVl7Z9/el2JBAiwzAZBTubHkpdZrBxWDovklnLY0XtiZbGyWLyU3SwOi0MkvvgCFi+GI0fcCPYjR9zlL77wujIYNGgQ//jHP1i3bh3XXHMNx48f59JLL+Xzzz9n9erV9O3blx49erBw4cJMb2fy5MmULl2axYsXM3LkSJ577jk++eSTTPcZMWIETZs25YcffqB///7079+fFStWAHD69Gk6depEyZIlWbJkCRMmTOBf//oXSUlJGd6eMYYKFSowa9YsDh8+nOF2//znP5k2bRrjx49n7dq1DBgwgB49ejB37lyKFSvGggULAJg/fz579uxh+vTpmT6OoHHoEEyfDrfeCqVKeV2NSFBRDqdPOSwi+UlZnD5lsUgAZacLkddLXndrn3zSdWldlLrFGGufesrvm85SVt3asWPHZnkbnTp1svfff3/y5fS6ta1atUq1T4sWLVLtk163tmfPnqn2iYuLs88//7y11tpPPvnERkZG2n379iVfP2/ePAtk2K211tq5c+faSpUq2cKFC9vGjRvbBx54wH799dfJ1//xxx82MjLSLlmyJNV+ffr0sTfccIO19q/nZtWqVRk/KT5B1a0dN869uBYv9roSCSD0yZm11v/fNeWwclgkt5TDjt4TK4szoyyWvJbdLA6LEQwNG0JUVOp1UVFwySXe1JNSfHx8qsunT59m6NChNGjQgHLlyhEdHc3nn3/O9u3bM72diy66KNXlypUrs3///lzvs379eqpXr06FChWSr2/WrFmWj6dt27Zs27aNuXPncuONN7JmzRratGlD//79AVi1ahUJCQm0bt2a6Ojo5OX1119n8+bNWd5+UJs4ES6+GJo08boSkaCjHM75PsphEQk0ZXHO91EWi+RMWEzyePXV0KyZGwJ2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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1c2020f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(18, 4))\n",
"for index in range(3):\n",
" train_size = 3 * (index + 1)\n",
" X_train = X[0:train_size]\n",
" y_train = y[0:train_size]\n",
" X_test = X[train_size:]\n",
" y_test = y[train_size:]\n",
" X_b = np.c_[np.ones([train_size, 1]), X_train, X_train**2]\n",
" theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)\n",
" X_plot = np.linspace(-0.2, 8.3, 1000)\n",
" X_b_plot = np.c_[np.ones([1000, 1]), X_plot, X_plot**2]\n",
" plt.subplot(1, 3, index+1)\n",
" plt.plot(X_train, y_train, 'b.', markersize=10, label=\"Training Set\")\n",
" plt.plot(X_test, y_test, 'gs', label=\"Test Set\")\n",
" y_plot = X_b_plot.dot(theta)\n",
" plt.plot(X_plot, y_plot, 'r-', label=\"degree=2\")\n",
" plt.xlim(-1, 8.5)\n",
" plt.ylim(-15, 160)\n",
" plt.legend(loc='upper left', fontsize=14)\n",
" plt.title(\"Training Samples: {}\".format(train_size), fontsize=14)\n",
" \n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Cr+jiTka4ityxJIl3t2CSpW8pFSggN8RiYj4Y8QIb53T/v29pWVERGLF22/DwIFw113w4IN+RxOT1EEVAfjlF69Kb3w8zJwJRYv6HZGIiD+mTYMePbxqlY8/7nc0IiLh89130LYtXHaZpnn5SB1UkfXr4eqrvSQ0ezaULu13RCIi/lixAm67zRvS+/LL+nImIrFj2zZo1gyKF4f334f8+f2OKGZpDqrEti1boGFD2LcPvvgCLrjA74hERPzxxx9w441YoULMfWAq34w8jWrVoHFjTccXkRwudVG4r76ChAS/I4pp6qBK7Nq50+uc7twJc+fCJZf4HZGIiD/274dmzbDff+eBKl8y+YGyJCZCXBzUru0NLlEnVURypNRF4d59F6pW9TuimKchvhKb/v4brr0WNm705lvVrOl3RCIi/jiynMLXX/Nd11eZvKo2e/d639n27oVFi4PhZAQAACAASURBVLyp+SIiOdITT3hF4fr1g5tv9jsaQR1UiUV793pj1n7+GT74wFtSRkQkVvXo4S0lM3w4M+L+TWLisZsTE2HZMn9CExEJqVdegT59oHVr76dEBHVQJbbs2wc33giLF8Obb0KjRn5HJCLinzFjvCVl7rsPHnqIatW8Yb2pxcVpxJuI5ECffQbt20ODBvDSSyoKF0HUQZXYsW+fV53tiy9g8mRvMryISKz6+GN44AFo2hSeeQaco3Fjb85poULed7VChbznjRv7HayISBCtWAEtWkDFivDee5Avn98RSSoqkiSx4cid088+8zqn//mP3xGJiPhnyRJo1cpbTubNNyGP93Ugd26vINLMmd6w3qpVVcVXRHKY33+HJk3gtNNgxgwoWtTviOQ46qBKznd857R1a78jEhHxz7p13l3T+HivSNxxY3pz5/Y2N23qU3wiIqGye7eX3HbtgvnzoVw5vyOSNKiDKjnbvn1www3w+efqnIqIbNvmVTBPSvLyYsmSfkckEcY5twHYAyQDh82shnPuDOAtoDywAWhpZn/5FaNIluzf792wWL4cPvrIG0EiEUlzUCXnUudUROR//vkHrruO/2/vzuOjrK4/jn8uCQEERFSWsoMsioqAEVFQEXEJLohKAbdqa1EERdEfQkvrikqrFq1UjIhatbggKiogClYENWVJUBQUTC2yySbIJsvk/v44CYQ9y0yemWe+79drXpOEZHIe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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1ad63898>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m = 10\n",
"X = np.linspace(0, 8, m).reshape(-1, 1)\n",
"train_size = 8\n",
"plt.figure(figsize=(16, 4))\n",
"np.random.seed(42)\n",
"for index in range(3): \n",
" y = 3 * X ** 2 - 4 * X + 5 + 3 ** (index+1) * np.random.randn(m, 1)\n",
" X_train = X[0:train_size]\n",
" y_train = y[0:train_size]\n",
" X_test = X[train_size:]\n",
" y_test = y[train_size:]\n",
" X_b = np.c_[np.ones([train_size, 1]), X_train, X_train**2]\n",
" theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)\n",
" X_plot = np.linspace(-0.2, 8.1, 1000)\n",
" X_b_plot = np.c_[np.ones([1000, 1]), X_plot, X_plot**2]\n",
" plt.subplot(1, 3, index+1)\n",
" plt.plot(X_train, y_train, 'b.', markersize=10, label=\"Training Set\")\n",
" plt.plot(X_test, y_test, 'gs', label=\"Test Set\")\n",
" y_plot = X_b_plot.dot(theta)\n",
" plt.plot(X_plot, y_plot, 'r-', label=\"degree=2\")\n",
" plt.legend(loc='upper left', fontsize=14)\n",
" plt.title(\"$\\sigma={}$\".format(3 ** (index+1)), fontsize=14)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 交叉验证"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [],
"source": [
"m = 16\n",
"train_size = 12\n",
"test_size = m - train_size\n",
"np.random.seed(42)\n",
"\n",
"XMin = 0\n",
"XMax = 8\n",
"\n",
"X_value = np.linspace(XMin, XMax, m).reshape(-1, 1)\n",
"y_value = 0.8 * X_value ** 2 + 2 * X_value + 4 + 2.5 * np.random.randn(m, 1)\n",
"X = X_value[0:train_size]\n",
"y = y_value[0:train_size]\n",
"X_test = X_value[train_size:]\n",
"y_test = y_value[train_size:]"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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89Zbbx33vc44fNj9N79xv+22YHn4cFx2G5OXX37ZAd+6desx7xUXF/utt97qV155pffv39/POussd3efP3++T5w40Xv37u2DBw/2WbNm+e7du5s/t2HDBgd87dq1rV6vWLHCzz//fC8oKPBPfepTvnTp0mOON3/+/Favb7/9dr/66qv9hBNO8OLiYr/pppu8sbGxeZt9+/b55Zdf7n379vX+/fv7tdde69/5znd8/Pjxx/0zr1692gHfvHlzuz+bgwcP+rx583zYsGHeq1cvHz9+vC9evLhVfUDzo2fPnsfdV7x+V0Qk9YBqjzFDMmpqpsZGOO88uPhiuOWWYHneecH6dHDvvfcyfPhwqqqqeOCBBwDo0aMHCxcuZP369Tz22GNs2rSJSy+9tMN93XjjjVx55ZX88Y9/5IILLuCyyy7jz39u/7Yy9957L6NGjWLt2rXMnz+fu+++m2XLPvlO+Le//W1WrlzJ0qVL+cMf/kBeXh6LFi1qd58lJSWYGY899li77eaXXXYZlZWVLF68mLfeeot58+bxz//8zzz88MMA1NTUAPDTn/6Uurq6Dv8sIpKFYk22eDwSfYb1m9+49+njDp88+vQJ1idDR2dYX/7ylzvcxx/+8AcH/N1333X3459h3X///c2fOXjwoOfn5/svfvGLVsc7+gzroosuanWss88+2+fMmePu7u+//77n5ub6Qw891Gqb0tLSds+w3N0XLlzoBQUF3rt3bz/zzDP95ptv9nXr1jW/f6TmLVu2tPrczTff7OXl5e7ufujQIQf8kUceaf8H5DrDEskkZOsZVk0NNDS0XtfQALW1qannaKeddtox6373u9/xxS9+kZNPPpm+ffty7rnnAnR4htGyCSM/P5+BAweye3f7X9w7unFjyJAhzZ/ZtGkThw8f5vTTT2+1zdGv23Ldddexe/duli1bxpQpU3juuecoKyvjhz/8IQBr164FYOLEifTp06f5cd9997F58+YO9y8iAhk2W/ukSVBY2HpdYSF0ssEuYQqPKu7tt99m2rRpjB07lmXLllFdXc1jjwVfc/v444/b3dfRDRtmRlNTU7c/09Uv5vbt25dp06Zx2223sXbtWmbOnMm8efNoamqiqakJM2Pt2rXU1tY2P9avX98cZiIiHUmr2dq7q6ICysuhqio4syosDF5XVKS6srZVVVVx6NAhFi5c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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1c3e7860>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(7, 5))\n",
"\n",
"plt.plot(X_value, y_value, 'b.', markersize=10, label=\"Training Set\")\n",
"plt.plot(X_test, y_test, 'gs', label=\"Test Set\")\n",
"plt.legend(loc='upper left', fontsize='x-large')\n",
"plt.title(\"Dataset\", fontsize='x-large')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"degree: 1 total mse: 1004.8243901991978\n",
"degree: 2 total mse: 78.71016157762188\n",
"degree: 3 total mse: 14.505611368548402\n",
"degree: 4 total mse: 88.8396712174888\n",
"degree: 5 total mse: 1307.6732551728437\n",
"degree: 6 total mse: 20001.38512177253\n",
"degree: 7 total mse: 18480.563606888358\n",
"degree: 8 total mse: 10350128.013801835\n",
"degree: 9 total mse: 63201404.49438538\n",
"degree: 10 total mse: 121739968.04381178\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x23a1c149208>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"validation_size = 3\n",
"folders = train_size // validation_size\n",
"real_train_size = train_size - validation_size\n",
"total_mse_validation_coll = []\n",
"for degree in range(1, 11):\n",
" total_mse_validation = 0.0\n",
" for folder in range(folders):\n",
" # 划分训练集和验证集\n",
" folder_indices = range(folder*validation_size, folder*validation_size + validation_size)\n",
" X_validation = X[folder_indices]\n",
" y_validation = y[folder_indices]\n",
" X_train = np.setdiff1d(X, X_validation).reshape(-1, 1)\n",
" y_train = np.setdiff1d(y, y_validation).reshape(-1, 1)\n",
" # 构造训练集和验证集矩阵\n",
" X_train_b = np.ones([real_train_size, 1])\n",
" X_validation_b = np.ones([validation_size, 1])\n",
" for p in range(degree - 1):\n",
" X_train_b = np.column_stack([X_train_b, X_train ** (p+1)])\n",
" X_validation_b = np.column_stack([X_validation_b, X_validation ** (p+1)])\n",
" # 训练模型\n",
" theta = np.linalg.inv(X_train_b.T.dot(X_train_b)).dot(X_train_b.T).dot(y_train)\n",
" y_pred_validation = X_validation_b.dot(theta)\n",
" mse_validation = np.mean(np.square(y_pred_validation - y_validation))\n",
" total_mse_validation += mse_validation\n",
" print(\"degree:\", degree, \"total mse:\", total_mse_validation)\n",
" total_mse_validation_coll.append(total_mse_validation)\n",
"fig, ax1 = plt.subplots(figsize=(8,6))\n",
"left,bottom,width,height = [0.23, 0.37, 0.35, 0.35]\n",
"ax2 = fig.add_axes([left,bottom,width,height])\n",
"ax1.plot(range(1, 11), total_mse_validation_coll, 'bs-')\n",
"ax2.plot(range(1, 11), total_mse_validation_coll, 'bs-')\n",
"ax2.set_xlim(0, 6)\n",
"ax2.set_xticks(range(0,6))\n",
"ax2.set_ylim(-100, 1400)\n",
"plt.show()\n",
"plt.show()"
]
}
],
"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.6.4"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}

评论 ( 0 )

你可以在登录后,发表评论

搜索帮助