You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

3a - Linear regression 1D.ipynb 70 kB

6 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "# Linear regression \n",
  8. "\n",
  9. "\n",
  10. "We load the dataset 'diabetes' using the sklearn load function: "
  11. ]
  12. },
  13. {
  14. "cell_type": "code",
  15. "execution_count": 11,
  16. "metadata": {},
  17. "outputs": [],
  18. "source": [
  19. "# matplotlib inline\n",
  20. "from sklearn import datasets\n",
  21. "\n",
  22. "# Load the diabetes dataset\n",
  23. "diabetes = datasets.load_diabetes()"
  24. ]
  25. },
  26. {
  27. "cell_type": "markdown",
  28. "metadata": {},
  29. "source": [
  30. "The dataset consists of data and targets. Target tells us what is the desired output for specific example from data: "
  31. ]
  32. },
  33. {
  34. "cell_type": "code",
  35. "execution_count": 3,
  36. "metadata": {},
  37. "outputs": [
  38. {
  39. "name": "stdout",
  40. "output_type": "stream",
  41. "text": [
  42. "(442, 10)\n",
  43. "(442,)\n"
  44. ]
  45. }
  46. ],
  47. "source": [
  48. "X = diabetes.data\n",
  49. "y = diabetes.target\n",
  50. "print(X.shape)\n",
  51. "print(y.shape)"
  52. ]
  53. },
  54. {
  55. "cell_type": "markdown",
  56. "metadata": {},
  57. "source": [
  58. "Splitting the data\n",
  59. "==================\n",
  60. "We want to split the data into train set and test set. We fit the linear model on the train set, and we show that it performs good on test set. \n",
  61. "\n",
  62. "Before splitting the data, we shuffle (mix) the examples, because for some datasets the examples are ordered. \n",
  63. "\n",
  64. "If we wouldn't shuffle, train set and test set could be totally different, thus linear model fitted on train set wouldn't be valid on test set.\n",
  65. "Now we shuffle:\n"
  66. ]
  67. },
  68. {
  69. "cell_type": "code",
  70. "execution_count": 5,
  71. "metadata": {},
  72. "outputs": [
  73. {
  74. "name": "stdout",
  75. "output_type": "stream",
  76. "text": [
  77. "(442, 10)\n",
  78. "(442,)\n"
  79. ]
  80. }
  81. ],
  82. "source": [
  83. "from sklearn.utils import shuffle\n",
  84. "X, y = shuffle(X, y, random_state=1)\n",
  85. "print(X.shape)\n",
  86. "print(y.shape)"
  87. ]
  88. },
  89. {
  90. "cell_type": "markdown",
  91. "metadata": {},
  92. "source": [
  93. "Each example of data has 10 columns in total.\n",
  94. "\n",
  95. "We want to work with 1-dim data because it is simple to visualize. Therefore select only one column, e.g column 2 and fit linear model on it:"
  96. ]
  97. },
  98. {
  99. "cell_type": "code",
  100. "execution_count": 6,
  101. "metadata": {},
  102. "outputs": [
  103. {
  104. "name": "stdout",
  105. "output_type": "stream",
  106. "text": [
  107. "(442, 10)\n",
  108. "(442, 1)\n"
  109. ]
  110. }
  111. ],
  112. "source": [
  113. "# Use only one column from data\n",
  114. "print(X.shape)\n",
  115. "X = X[:, 2:3]\n",
  116. "print(X.shape)"
  117. ]
  118. },
  119. {
  120. "cell_type": "markdown",
  121. "metadata": {},
  122. "source": [
  123. "Split the data into training/testing sets"
  124. ]
  125. },
  126. {
  127. "cell_type": "code",
  128. "execution_count": 7,
  129. "metadata": {},
  130. "outputs": [
  131. {
  132. "name": "stdout",
  133. "output_type": "stream",
  134. "text": [
  135. "(250, 1)\n",
  136. "(192, 1)\n"
  137. ]
  138. }
  139. ],
  140. "source": [
  141. "train_set_size = 250\n",
  142. "X_train = X[:train_set_size] # selects first 250 rows (examples) for train set\n",
  143. "X_test = X[train_set_size:] # selects from row 250 until the last one for test set\n",
  144. "print(X_train.shape)\n",
  145. "print(X_test.shape)"
  146. ]
  147. },
  148. {
  149. "cell_type": "markdown",
  150. "metadata": {},
  151. "source": [
  152. "Split the targets into training/testing sets"
  153. ]
  154. },
  155. {
  156. "cell_type": "code",
  157. "execution_count": 8,
  158. "metadata": {},
  159. "outputs": [
  160. {
  161. "name": "stdout",
  162. "output_type": "stream",
  163. "text": [
  164. "(250,)\n",
  165. "(192,)\n"
  166. ]
  167. }
  168. ],
  169. "source": [
  170. "y_train = y[:train_set_size] # selects first 250 rows (targets) for train set\n",
  171. "y_test = y[train_set_size:] # selects from row 250 until the last one for test set\n",
  172. "print(y_train.shape)\n",
  173. "print(y_test.shape)"
  174. ]
  175. },
  176. {
  177. "cell_type": "markdown",
  178. "metadata": {},
  179. "source": [
  180. "Now we can look at our train data. We can see that the examples have linear relation. \n",
  181. "\n",
  182. "Therefore, we can use linear model to make good classification of our examples.\n"
  183. ]
  184. },
  185. {
  186. "cell_type": "code",
  187. "execution_count": 12,
  188. "metadata": {},
  189. "outputs": [
  190. {
  191. "data": {
  192. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztvX18VOWZ//++ZpjARFsChIpJqFi/rv35QKGCdQvdtbpqrRWyPqBrW+1+a22/trq2/YLYtRBZWwF3q7WPUtytrtqa+gBptctSH9pC1xUQitqtX59qJUEFNCgkkKf798c5Mzkzc58zZ2bOZCbJ9X698kpyZubMfc4k93Xf18PnEmMMiqIoipJNrNIDUBRFUaoTNRCKoiiKFTUQiqIoihU1EIqiKIoVNRCKoiiKFTUQiqIoihU1EIqiKIoVNRCKoiiKFTUQiqIoipUxlR5AKdTX15tp06ZVehiKoijDii1btuw2xkzO97xhbSCmTZvG5s2bKz0MRVGUYYWIvBLmeepiUhRFUayogVAURVGslM1AiMg4EXlSRH4vIs+KyPXu8R+LyMsiss39muEeFxG5VUReEJHtIvLBco1NURRFyU85YxAHgVONMftEJAFsEJFfuo8tNMbcl/X8s4Cj3a8PAT9wvyuKoigVoGw7COOwz/014X4FNZ+YD9zpvu4JoE5EDi/X+BRFUZRgyhqDEJG4iGwD3gDWG2P+233oG64b6WYRGeseawRe9bx8h3tMURRlWLJmaztzlj/KkYsfYs7yR1mztb3SQyqIshoIY0y/MWYG0AScJCLHA9cC7wdmAxOBawo5p4hcLiKbRWTzrl27Ih+zoihKFKzZ2s61DzxNe2c3Bmjv7ObaB54eVkZiSLKYjDGdwGPAx4wxO1030kHg34CT3Ke1A1M9L2tyj2Wfa5UxZpYxZtbkyXnrPBRFUSrCTeueo7u3P+NYd28/N617rkIjKpxyZjFNFpE69+ckcDrwx1RcQUQEaAaecV/SBlziZjOdDOw1xuws1/gURRkZVKsbp6Ozu6Dj1Ug5s5gOB+4QkTiOIWo1xvxCRB4VkcmAANuAL7jPfxj4OPAC0AX8fRnHpijKCCDlxkmt1FNuHIDmmZUNYTbUJWm3GIOGumQFRlMcZTMQxpjtwEzL8VN9nm+AL5ZrPIqijDyC3DiVNhALzzwmw3gBJBNxFp55TAVHVRjDWotJUZQRwvZWeGQZ7N0B45vgtCUwfUHel1WzGydloG5a9xwdnd001CVZeOYxFTdchaAGQlGUyrK9FX5+FfS6k/reV53fIa+RqHY3TvPMxmFlELJRLSZFUSrLI8sGjUOK3m7neB4WnnkMyUQ849hwc+NUM7qDUJRRxJqt7dXn8ti7o7DjHkaCG6eaUQOhKKOEqs34Gd/kuJVsx0Mw3N041Yy6mBRllFC1hVunLYFEVswgkXSOKxVFDYSijBKqNuNn+gI451YYPxUQ5/s5t4bKYlLKi7qYFGWUUNUZP9MXqEGoQnQHoSijBM34UQpFdxCKMkqoeMZPkcVwSuVQA6Eoo4iKZfyUUAynVA51MSmKUn5KKIZTKocaCEUZSra3ws3HQ0ud8317a6VHNDSUUAynVA41EIoyVKTcLHtfBcygm2U0GAm/oreQxXBKZVADoShDxWh2s2gx3LBEg9TKsKQqNYXyMZrdLKlAtGYxDSvUQCjDjmrVFMprtArQHKomAxjZWLQYbtihLiZl2FGNmkIpo9Xe2Y1h0Ghl9EcO6WYJda4hoprGEoZq7U89XFEDoQw7qlFTKJTRCqk5VE0GsJrGko/hZsyGA+piUoYd1agpFNpohXCzVIMBTLmVbPd5qMcSlmruTz1c0R2EMuyoRk0hP+NUjNFqqEsyL7aBDTVX8dLYi9lQcxXzYhuGzAB6V+JBY6w2qsGwjjTUQCjDjuaZjdx47gk01iURoLEuyY3nnhD5KrEQf3aURuuWY59nRWI1TbHdxASaYrtZkVjNLcc+X/C5isG2EvdSaWPsR5RGWnEom4tJRMYBvwHGuu9znzFmqYgcCfwUmARsAT5tjOkRkbHAncCJwB7gQmPMn8o1PmV4U25NoUIzpaIUwpv94ndAejKOJaXHOc7nCz5foQStuBurOKV44ZnHZHxmUL3GbLhQzhjEQeBUY8w+EUkAG0Tkl8BXgJuNMT8VkR8CnwV+4H5/yxjzv0TkImAFcGEZx6covhTjz47MaFW4XsIvxtNYl2Tj4lOHZAzFUHG12hFI2QyEMcYA+9xfE+6XAU4FLnaP3wG04BiI+e7PAPcB3xURcc+jKMVRpMR0Rf3ZJfZoLpXhvBLX/tTRUtYYhIjERWQb8AawHngR6DTG9LlP2QGkPs1G4FUA9/G9OG6o7HNeLiKbRWTzrl27yjl8ZbhTgvaRzW89L7aB/xr3D+UX2otAlqKUeoChivEo1U9Z01yNMf3ADBGpAx4E3h/BOVcBqwBmzZqluwvFnyDtozy7iOxV9LzYBlYkVpPEjQ2Uo5+Bd7eTnABjktD9VsGyFFFUmutKXIEhqoMwxnSKyGPAXwJ1IjLG3SU0AamlTTswFdghImOA8TjBamUEUJRcQ6kdyErw5Wf7s79W87NB45AipLEJRXZDne43nV3DuasKPr/WAyhRUTYXk4hMdncOiEgSOB34H+Ax4Hz3aZcCa92f29zfcR9/VOMPI4OiKlyjkMYuUWK6eWYjGxefysvLz2YKu+1PiipwHKHSq9YDKFFRzhjE4cBjIrId2ASsN8b8ArgG+IqIvIATY7jdff7twCT3+FeAxWUcmzKEFCXXEMWEGaXEdLn7GUSYuXTpoU/mFNmB1gMohVPOLKbtwEzL8ZeAkyzHDwAXlGs8SuUoakUbxYQZpcT0aUsyXUAQbT+DqDKXtrdynfkhY2IHAGiS3SxPrKbGxJh75hURDFQZTagWk1J2itJOimrCjEpiutz9DKIyQI8sY0z/gYxDtdLDstr7qZ35jQgGqowm1EAoZSdfXr01gF3uFXsAvgH1cvYziMoA+eywartfK3GAymhEDYRSdoIqXH1TMs+dQ/M5tw55B7KKNiOKwgBVuMhOGVnIcE4UmjVrltm8eXOlhzHqKaXj2Jzlj1ZO1sGSRjvn4fohG08x9y3va7LTZcHZeVn6Tgx3qqnr3nBDRLYYY2ble57uIJSSKHXFXbGUzOyJ1E2jnbX/72lnbtnHU8x9C/WaMsRKqnEirta2syMNlftWSqLUjmOlSDSX1F7SJ4322pqfFT2eQijmvoV6TanFhVlUa5e24dTpbjijOwilJErdARQrDOe3gtz8yps89sdd+Ve7PsHcw9hNMhEvu1Bd6PvmmfDvHZjEytgC2gbm2l/jsyviz0/Q9ezDjOt+jY6BSayu+RQzzr481Eq7oKrsiI1TEFoMODToDkIpiVKbtBQrDOc3cd39xJ/DrXZ9grYyvmlIhOpC3besavKmmFPTkCp8y3mNz67IbL6d2u6dxNxzLOr9Phse/H6oXUCoiXh7K6w4Eh74XGmV7wWgzYGGBt1BKCURhTR0McJwfhNXdspF9mo35U+f9fY5LK+5nSQHB5/sptE2T49eqC7bj//R90/m/i3tgam/J6/9GlPIvM5a6WHRmFbaeubmvMZvVyRZv9dKD1ebn3LhutPyXmfeGhZbUDxFlFpVWQxnSfLhhO4glJKolDR0ISvFlDHx+tPXDszlmp7P0m7qMQiMnxo+02d7qyP3HVL22+bHv39LO+ed2Gi9b6nnv8fY5ewbYnvs97qAVNYG2RPKHZO3lapt1+LFa7QKvG9BqCT50KA7CKVkKiENbVtBCrk7CBg0JtluqbaBubQdnOuksH45ZAqrn58ffI2LnzvssT/usqbOpp7fUVNPk+SKBMbGN/Fyy9m5b2QrLvS5Kx1mUigjm7dLWz7pk5TRKuK+hRmbGoTyojsIZVhiW0F+8uT3+q5212xtt7pKoMDAZhEigoUGVFPHV/YtoMvUZDzWzVg2HXWl/Y2mL3B2QeOnQmpXNOt/0xcfl/G0LlPDLVwU2h3jVbXduPjUzEk5aNfirXyPUK1WGTp0B6EMW2wryFlHTMxZ7QLpHHkbdbUJWm5YymU9d9EQ28OB5BRqz/LxnRchIlioFlXq+W0Dc6EXFo1pdVxCZhIr+xawftMR3Di13b56tlRjj3nvyXT9cklGFtPckFlMebHuWoDkRDhrxeBYKtxnWykOraRWRjx+1dopmmMb+GZiNbUy2BCoLz6OMfO/k2skbj7eR8piKnz5Gev5s1NywdnZ+PnMbc/PZkgqzT3jyVu9nS+9tYj7ppQPraRWhg9lzp/P50L6v2NaM4wD4Cii2jJwihARzOvHD3h+JG6xEgiqWE6NsaPzEBrqbmXh/IAK6wqKLyrFowZCqSxlCF5m4+fiST9uCQQ7Y7G4P4qUsig0oJp6/sxl/8lbXb05j9fVJkKfqyhcoz1v7w5mSWaBXndvP9f//FkO9A6El7oot1y6UhbUQCiVJSh4OX1BJDpAtownLx3Gni3kG4Atp+x3Fn4eYNvxyDSTPEY7BukCPXpJGwmb0crb93qo7tsQVnSPdNRAKJUh/U9s8UsD7N1hdW98+d5tbH7lTW5oPiH0W6UmrJa2Z+nszp3YVvYtYLktBlEG90ehk/hey3htx4sVr7OO5/Fco51doOdHMa6vSMUAh2BHOprQNFdl6MmQkPBhfJO1fsAAdz/x54LF4ppnNrJt6RnccuEM4pJZW9w2MJfFvZexY6CeAYSu5OH2AHWJFCN8F1ZSohjxOr/xGJ/MogbZAzgB9rqk3cVVqNRF5GKAmk4bKWoglKEnX/WtG7wMktMoVrWzeWYj/7LgAzn1Euvjf83mv/0NsZZOaq/5Y1lWm8VM4nkrmV2KEa/zG8/r1NvPZSalK5Zb5h0Xalz5iFyVVdNpI0VdTMOAsujxF+unjcK/G/TPOn5q+pwND/unp5aSxVNoVlFUFDOJhx1rdiB+XmyDUz8R2wM32z8nv/e9secCvn3Iv+VkHDWdcyMbp2em1pZ6DyNXZdWOepFSNgMhIlOBO4HDcBZ9q4wx3xaRFuBzQEpo5mvGmIfd11wLfBboB64yxqwr1/iGC2VpjFKsnzYq/67vP3FmTvzCM4/hy/duC5TPKJZKyDQUWjCXIsxYvYH4ebENmTEVn8/Jbzyb3306fHxm3oVAFPew2Hvii6bTRko5XUx9wFeNMccCJwNfFJFj3cduNsbMcL9SxuFY4CLgOOBjwPdFJG478WiiLI1RivXTRuXfPW2J80/rxfJP3DyzkU+e/N4cNdJkIs5H3z+5+GZBFSKsu6gYvNIjiyx1HbbPKXA80xc4xrql0/lepgBv5PfEJjcyAtutDhVl20EYY3YCO92f3xGR/wGClhvzgZ8aYw4CL4vIC8BJwH+Va4zDgbI0RinWTxuVfzcjJ/5VkHjmBOb5Z76h+YQc+YxsqexCdlWRZ8wU4G4rt2srvaJv2WN/QtbnVClXW9nHMIRpyCOdIZHaEJFpwG+A44GvAJ8B3gY24+wy3hKR7wJPGGPucl9zO/BLY8x9Wee6HLgc4L3vfe+Jr7zyStnHX0n8ZCJKklooVvYgarkEWy+BRDLviq/Ye2KTsEhpnTYWOjFZxt4XH8cN8gXu2HdSZXs3q6yFkoewUhtlz2ISkUOB+4GrjTFvAz8AjgJm4Oww/qWQ8xljVhljZhljZk2ePDny8VYbZXFLhHTxRPY6Pwp1Wbn9BH7b/bdsqLkqp7Navl2VX9os5EmvtPUxsIx9TP8BLuu5qzy9mwvppRD156SMWspqIEQkgWMc7jbGPABgjHndGNNvjBkAfoTjRgJoB6Z6Xt7kHhvVlKUxSrF+2qj9u4W4rDy1EzHB2n7TN7CZx7CksMZ2stp+pgO+PjUcqVoB3/MVw/ZWWHNFxhgO3v8FWm5YajdAlfTDR9gUaLSxZmt71cXVypnFJMDtwP8YY77lOX64G58A+FsgtedtA+4RkW8BDcDRwJPlGt9woiwZN8X6af1eV0z6ayEpiZYVu7e613dX5ZWNEGiSXNkILzm7EL9djsTB5Ep3dJhJwecrhl9eAwOZldNjpZ8re1Yz94G/BCyxl0r44bWKuWjKkq0YAeXcQcwBPg2cKiLb3K+PAytF5GkR2Q58FPgygDHmWaAV+APwH8AXjbH8ByrVh98qO9/qsRBXSEB1b+CuKsCwWM+XvQvx2+WY/pyxd5kaVvZlToSlpuMC0P2m9fBE2RfdLiUKtIq5aMqSrRgB5cxi2kBuv3SAhwNe8w3gG+Uak1Im8gju+VKIwqfPbiNW1xTcLtTXsOxmQ81VNMhuOky904gn/te5u5Cgmo3TlqTH3pWcwpL959E28OH0U6JKYc3HUEl/5yXCKuayFIdWMWXJVowAraRWSqeUiSGsK6TYAig/wyKSVnBtkt2sqLmdT39wGrNnfizU+2466kqufriejs4VzgR2xjHMBf6rHJNacqJ1F/EWhwIR7VKiIKIq5mp1t5STyAsGI0K1mJTS8ZsAopQ3CBF4TQX5pi1+iKOufZhpix+iZf95OT2ZB5NbB0lykNkvfifU+2464Xou2XREjsAc4N+7uRTOWgHxzN7UPWYMLb2XDNkuJRQRZU9Vq7ulnJSziLIUtOWoUjrbW+lbe6XThc3Ft2VnmQhq03l+ze9Ydsj91Ha/5r/KTeHRgvKjmDqMkl0mbhKA2buD16nnxp4L2Pzu04vapZTVfROBVteRix+yyqsI8PLysyMZZjX2jBhKt5q2HFWGjDX9c9jQexlX81MaZA8dZhK3DFzE3P45NA/RGGyrzhT39XyY/6o9jY0t7uTtV0gGoTJvCvUXR+IycV1xAkwBvh3uVeUZS4hxlkLZ3S1Vmm1VCX2wfKiLSSmZm9Y9x309H2Zuz6287+DdzO25lft6PlyQSyAwBzxEbn2+YF7G4zZXiJc8mTdhezSkyOsyGcLageHgvim7u0WzrUKjBkIpmVIzMAKbxoRMoc23usx4PCOu4ENAgL3QCSzw/hSbIlwk1Zot46UsxaFetGdEaNRAKCVT6Io6m8BVbcjVnm3STmGdvFNqpX5GIiDAXugEFnh/hng1W+pnNVQ0z2wsT8AfhiapYoSgBkIpmVJdAoGr2pCrPe+kDaTbiqYn7/hGuxvHJ/Nm01FXBsoeFDKBBd6fIV7NVmu2zJCiWlWh0SC1UjKlSjYHBiXHhs+t9w3yhQlKejJaNh11JZdsOoJu9/knvr2e2Ws+h1m7Byki4yXw/jw+tB3QqkHiu+IUUqA5ytE0V6Xi2FJUk4n44Mq/CEnwDAqUv/amseZ0Zyvm/f3Y3uroLGUXwUV1fkXxQdNclSGn2Dzu5vhGzjh0CeO6X6NjYBKraz7FjLMvd19b2mpvzdZ25u3dYfel+rhxvC6vwO5s2WMoJLfe1gsDnKrps1YUbRxSn0F7ZzdxEfqNKbzXhaK4qIFQIqHo/Hp3oqx1J8qm2G5a5DaIH0faOBSZW58a0yyZRFNsd+4TfNw4XpdXg1heB7nGpdDceltwGqDmkJKMg/cz6He9A6NBqkIpDxqkViIhKBMpsMbBJ4vntQe+VrIufmpMK/sW0GUypSqCgpLeQG6HqbefPNu4FJqNVGJw2nZPg4oFq63WQRke6A6iwlSdamWREgR+mUip1avvzsJnQnyP2Z2jc1TofUmNqW1gLvQ67qJUpXfTOTf6Xpc3kHvT2wtYXnM7SQ4OPsFmXAqd8AsVtvN8Ll3JKWzYfx7tPY5ybPY99qOaah2U4YHuICpIYIFYJSihaGt8MmE9LhBcueszIXob7xS7+vXm9rcNzE1Xel9Y+6O8Ri+Vxvrtb95I8tzv5u/OVmhufSGpllmfS233TpbJqozOeN29/enUXj+qrdZBqX7UQFSQqpM9KKFoy29u8suRS69mLROlrfFOMatfr6toXmwDG2qu4qWxn2S9XFFYpXKqqK6l0/luMy6F5tYX0hY0ZNOjfmMKKxZUlDyoi6mCVJ3sQZCbJI/rqbOr1/5aH9Kr2ayc9Neo55u9F+S0Aw21+s0aY/NpS+DcOWx7aBWLegdTVWu7d0YvzlZMbn3Y4HtANz0vqWwlzWJSokINRAWpuiYhfn7x5IS8GTp+1zKhNsGB3oGcGoeM1axnonxiazvrH3gaBgKeb8Mni6j5nFtpPuR+2BsyVTUPgTGjcvWB9vlcvG641D2qRkVQZfiiLqYKUknZA2tmkZ+bBPK6nvyuZek5x+VIYHizm7IpWqgtyD0WkZxFxWJGls+lLz6O1TWfKo+YnaK4aCV1halEFlPeyuVsN8kDl2OPJojjlw9xLYHvGcX1ttT5jzGor7SlktqPYhoFRUYVNrhRhi9hK6nzGggROdcY80C+Y5VgJBiISlDwRFegVEUk71koQWP062ddoJzFkHQ6U5QhIKyBCONius5y7B9DDGCqiDwmIn8QkWdF5B/c4xNFZL2IPO9+n+AeFxG5VUReEJHtIvLBEGNTiqDg4HgE6pez3l7vZhFdzIaaq9IpmtnvGVhUF0S+MY7xPJacWJBxSI3JbykVOoA+RE2BFCUqfIPUInIm8DGgUUS+5Xno3cBAiHP3AV81xjwlIu8CtojIeuAzwCPGmOUishhYDFwDnAUc7X59CPiB+10pgDAuK29AeV5sg1tAtps3ZDJs3587cWZk6LwKEnNW4w98zhGby6cdtL01o9isSXZzS+L7nNj//1h16Bczxh5GrsN+jT5ZRJC7e+gLnyUW1OsaSgugA8PXTaQur1FBUBbTG8AzwAHgWc/xd3Am9UCMMTuBne7P74jI/wCNwHzgFPdpdwCP4xiI+cCdxvF5PSEidSJyuHseJQRhJ9iFZx7DtQ88zen9v85QKp3CLv+JK/X72i9CvycjqPtNWHOF/TUpHlmWWYkMxAQ+Hf8Vxx57BuC4mILqQvxiGZnXaMkiuvl4/+B1iAnNNqa0UY3t4UByCrXxZaR1o8g1YOtlSVprqpgxVB0j0eApVnwNhDFmK7BVRO7G2TG81xjzQjFvIiLTgJnAfwOHeSb914DD3J8bAa8TeYd7TA1ESMJMsDBoLE5e+yVqKSD985FlmcYhxUBv8GTnky0UEzh880rm/OFoFp55jDVGAU4/Bm6+Cvbu4GTqOb3/AtoYrJOwXWO+92bvDv/dlmd1fO/AJFbGFqTrMrLlv7NrKmwGbNzY15xARdixVTtBGWNqIEYUYWIQpwFPA+sBRGSGiDwY9g1E5FDgfuBqY8zb3sfc3UJBaVQicrmIbBaRzbt27SrkpSOeQmILzTMbmUJIpdJ8x/M9FtD8pkH2pHcBtjk0NSGnZCamsIvlidUZMhMQED/xee+u5BRryuqmttsyZC2aYrsz3i9Q/hu7kfbWK4QZW9WjPZ1HDWEMxDKcWEAngDFmG/C/wpxcRBI4xuFuT9bT6yJyuPv44TiuLIB2wNsguMk9loExZpUxZpYxZtbkyZPDDGPUUHC/4UL1g4ImtKDHTluCfQk9OHl29/ZbVwq2CdkmM+F7jT7B65W9F1p3W1OfuilQ1iKf/LfNUBWqJlv1aE/nUUMYA9FrjOnMOpZ31S8iAtwO/I8xxhvkbgMudX++FFjrOX6Jm810MrBX4w+FUXDhXaHZSactgXhN7vFYIniym74AZv1vso2ETXMpG78JuVF2pzOizq/5XXCg2JLBdMe+k6xPfY+x70obYnsQcAL5NtzJ0Wao2gbmsrj3MnYM1DNghNeYbM2iKjqDa6jRns6jhjBSG/8jIguAmIgcCVwFPBHidXOATwNPi8g299jXgOVAq4h8FniFwejew8DHgReALuDvQ1+FAhTRbzgnOymeWSHtF6j2tskM2wHtE99i08AxTH3qJt5jdtNhJrGyb0GG5pJNlmMn9TRaXGEijrlpkt0sj69mTPwDeAPFgL1rm5vB5CcN8oZMdoL1WcTGN/Fyy9lOlpetpsKdHFMJANm7k7aBubT1ONcqwMvTM+smim64VAm0p/OoIUyh3CHAEuAMnL/tdcD1xpiu8g8vGC2Ucyk15dA2kUbcFzlMuuiN554AZBq4W459ntlPL7V3X/NiK9oLKJ5bc8o6a2X3nbNfyX2/7HuR5357237asBUHVrRKWxl1RNaT2hizHycN9ZooBqZETBQph0OQlRLU7SxbbTRzxXwqTJvg0VTyWdDYAqQBwVS/3dbsmR/LfD+bwc0jypcSzPOTF7G5w/IlGFRdYyllVJDXQLgZS9n/lXuBzcCPjDGWvEdlyAg5uQdOMLZVNkSaleI3AQpYV8iZ461n4ZnrnPH67gosAdI8Xdt8lU8jUmUtxOVXV5vgLYtkel1tYni5n5QRRZgYxKvAFOAn7u8X4hTPTQd+xGDAWSknfm6NECmHgRNMfCPONG1ZmUeYlVKItHngeP10lWwB0kKeWwwhXHth5bf9PL3GhK9vUZSoCWMg/tIYMzv1i4isAZ40xswWkT+Ub2hKGpsbae0XnWCxn8vFM7kHTjBjl/mcQyLNSll45jFsePD7XM1PaZDddJh6buEixr3/IuYsfzRjhR043sWDAVKzdwevU8+N+y9g88P1LOxvz5wwCw2mFhLLibiaeG+3veHS3u5e38e0x7RSbsIYiHeJSJMxJrUkbQDe5f580Oc1SpTY3Ej9PYOZRNlkrZID/dvj/NxIJtKslOb4Rj6RWM2Y/gOAk330TfkRX3sK2ns+DAzuFPxiFenrmL6ANf1zMp/r53YJ6y4qdML3ce11/XIJpz9cX3CsIN8Oq6yNpVRXSfEhjIFYBPyXiPwRxxfxF8CX3Oymu8s5OMWlkFjA+KlsOupKrn64no57HqKhLkldbYKPHHgsLcrXYepZ2beALe8+HcYG9EqA6CaPR5aljUOKGnOQa/kx9/Hh9LHu3v50q8xsvBNiqW6XVIxj1tvrubbmZxzGrtxSvqBAvc9nMq7rNdoPOpN5IbECW3psKqDd+OovaNiyksMZ/OzWx/86msZSqqukBBBYKCciMeB1HKOQUl09xhjTZozZb4z55yEYoxI6FiCsOWUdl2w6IkNC4pSex1meWE1TbDcxgabYblYkVnPLsc8HFz2lJg9XdiI9eRQjVe0zoU6UfbycJQHeb0zegr9S+nmnYhwnvr03n0qnAAAgAElEQVSeGxOrmWIzDnnG7feZZMtqpIxWPnw76cU3MvvppTSK57OruZ07Z78STfwhKMlBGfUE7iCMMQMicpsxZgawZYjGpGRjC7baGN9kXVl/NXZvjlxFUnqY/eJ3YJ5bO2DbJZSohJo9NttORdyZuUkczSN6Ycu7T0/HIvxcNaX0807do0U1Fl0l27htWD4Tv8rwjs7uUGmq1oD2zbkTeJKDzmfH54PHHgbVVVICCONiekxE5htj1uZ/qlIWsoOtyQlw8B1HRTWFu+rvuMcyaebRD/L100c5eZy2xOkfEUCt9HBNopVNZ34pb/aPzSUjODumOcsftfv+XXfZb7tfpaOm3v++pAjKeLIEwFfuP4+2g7kSHnW1ibS8+r01rTR072bnmno2vbqI2fMsk7zXrVdI3Ucx5EkFVkY3YbSYPgM8KCLdIvKmiLwlIj7RUaVsTF/gVAq3dMI1L0Pz9904gTjf3Upf2wq6w9Tbzxk0CWxvdRoDFfM6W+e06QscWY48NMieUK4Tr0sGMhN1U77/DC0jj7ss5aoJxHNPA68p9Zl8+RlmnH251TVmDOneGyk3X6Ps5vinvp7rrst26/mOL6IJXHWVlADCGIh6IAEcCkx2f1cZ1Sgpph1l1uSUWtHaBPtu4SL64uMyXx80CaQmKWPJJooloGe/faz5YhZnrcidjLKQAia+5pmNbFx8Ko11yZypNMf3b/G1xwQGsl+YSMK5PxqU7VhxpLPzCRGH8Ysj7O3utarSJjmY6+u3xQSyiXICn77AMYSWxYaihJHa6BeR8cBRgHeW+V3ZRjWaiDiLxFa9O/fMKxwxuxDZSGu2tnPy2q8xBdskJU7QIJVemz3WfFXd0xfAn5+ALT+2G58iJ75QAWsfl4wArzGZw9jtGKfUfbHpU9muKQuba+ymdc/R0B2y90ag60jKk4YaUeW4MvIII7XxWeArON3dngZm46i5nlLWkY0WyqCDZPff558EUtk9z8Z2+bRvMLkd5bxj9ZXscI9vb4Xf35NlHFzn0PipRU98oQLWfkHyuqlMyRb5g/wr+eyJPDsd+Ogz4Pn/hL07WJ+cQieHMpF9uefJ3jH5xgQsYoSKUmbCuJiuBmYBfzLGfAQ4EdhT1lGNJqooiySV3eMbs/AjNVaJ2x9PHbdOumZw8ivSIIbqg1Gorz3f/fdO7DbX2ubb07/Xdu9kfOwgPWTdH9v7a0xAqSLCGIgDxphuABGpMcY8C0RQoaMAVdWdK+WS8e2A5hNk7kpOcX6wuY28x32N4auFx2A8+NYQZFdUF+JrD7r/2RN2iLhB3PRSkxxvf//trU6so2W8E++QmHuvNSagVBZfF5OIjDHG9AE7RaQO+Dmwzs1g0iTpqAgjKDdEUggpV03bwFzoxa283sMbUs+Uc74JQN/aKzMqortMDUv2n8fcre00j58aXJXt5z6BweNFxmBCieIV4mv3qz2xNUgKu9vrfsvJQPOyvRXWXJGZstyzH+K9cO4qNQxKRQnaQTwJYIyZZ4zpNMZ8HbgBR15j/lAMblSQb2UbZTVzHryumraBucztuZWjDt7NyQe+zZyH61nTP4cb5Avp1pk7BupZ3HsZ9/V82MkYCnCPrNnaTsv+83J3JjaqoZLX9rmc+yNngs+etMPu9mzPe2RZpnFI0d9T+XugjHp8O8qJyFZjzMwhHk9BDMeOcgU3fgnoilaOoKW3G1q2CHgyEfcV0hPg5eVnW3c7XmG9ebENLBrTSqPsTldR2xEnhXc4EJTxlMKvQ19LHf71DsPoHijDiig6yk0Wka/4PWiM+VZRIxvFFNP4xezdYU0o8jteKilXja0FZighPYsb56blj6avOdWb+aWxFwePfzhV8tpkxT1ZTIFuwSC323C6B8qIJMjFFMcpjnuXz5dSIEEKpH68jj2jyO94VPjVFtiE9AC6evoyK5fznCswU2o4Zu24hYtr5j/LnIO3cuSG05hz8FbWzH82OEPrtCVO8WE28Zrhdw+UEUeQgdhpjFlmjLne9jVkIxxB+E267Z3dHLn4IeYsfzRnkr2x54Icv32XqeHGngvKNk5w9INspDKE6pKZj7/V1Zsrb+Fik/9Y2beAbjKvyxh40xzKphOuH5bB2dQO0auk63dP0kxf4MimeDPEkhNh/veG5T1QRhZBBqIcHoxRTZDSqN+Esvndp7O497KcwPDmd59e+ABCSnqs2drOvgN9OcfjMWH/wT6+fO823rE87rcbstUprI//NcvIDHj/Q+8VfPDgKq7+w9GFX1sVUMwOEXAMwTUvQ8te58sWCFeUChAUgzitlBOLyL8CnwDeMMYc7x5rAT4H7HKf9jVjzMPuY9cCnwX6gauMMetKef9qxKZAmk120xvnNT209cxNPyeZiHNjoc1iCpD0uGndc/TmiBRB/4Ch021/ebb8lkWJzAZEbQNz02qqHZ3djE8mEIHOrl7qahOMHRNjb3dvOjj/5Xv7+Qkn57xPsa00N7XdxtSnbuI9ZhdvyGRe/eBCu1pqqfikHZfSo6LU91aUcuBrIIwxpSq2/hj4LnBn1vGbsxsNicixwEXAcTgtTX8lIn9hjF/l1fAkWyfJL3fFO6HYtJXCtrHMoABJj3wT2rzYBpYnVqfF57y9HFJGAkgbE3BcUMlEnJsvnJFxTVG10tzUdhvHb7mOpPSAwBR2MX7LdWyCaI1EgKFtqKsvf2tQ7f6mDCFhKqmLwhjzGyCskZkP/NQYc9AY8zLwApArrD8CSCmQvrz87LRUdTbZE4r3NRsXn1pcJ7ECJD3yTWg2ZdJa6WHRmODajGx3SyiJjJBMfeomxzh4zyU9TH3qpoLPFUiAoV145jEkYpme2URMomkNmue9FaUclM1ABPAlEdkuIv8qIhPcY42AN9dvh3ssBxG5XEQ2i8jmXbt22Z4ybIhygsyLT8pkV3IKc5Y/mhEkt43LO+35NdppkPwSXdm7o7wSGSF5j7H/LbzH5On7EMCare059yavoc2O3EUZyasi3S5ldDDUBuIHOLLhM4CdwL8UegJjzCpjzCxjzKzJk4d3W4piJkjrpBUGS5VzX3wcS/afl5N1A+SM65MnvzdtNPxSVLP7MduIYndkuwdviP1vocNM4ro1T+c9p+09bBlJad2pbNx2r739mY7D3n7jG6Qu+LOsIt0uZXQQpuVoZBhjXk/9LCI/An7h/toOTPU8tck9NvzJE1QMpSHkUkyhXRpLMdcN+8/jvp5MT17KDWSbrGcdMZGb1j3Ho/tm8OnYrzIWx8bAIwMzAodQ9O7Icw+7klPYsP882ns+DAzeg+uP/D+c88ryDDdTqkd02xN/5q4n/kxjAfEbv4yklb0X0pK4zaqdZWv3CvaYju2zXHjf72lpezYjkJ8x1jC6XYoSIb5SG5GcXGQa8AtPFtPhxpid7s9fBj5kjLlIRI4D7sGJOzQAjwBH5wtSV73Uhk2CwU9yIQS26mZwVvgbF59a8PmOXPyQb6D8Fk8wOQcf+Y8dA/XM7bk1/XsyEWNcIk5nl8+E54NXjuTSQ5/kOvPDHIHAxb2XOaKCLo11SW459nkO37ySBtlDh5mUzqzykkzEQ7mx/O6NAC9fvN9q9P0+nwm1CWprxmQkGfgF6POONWQWU8GSLgVS7vMr5SUKqY1SB/ATnKZC9SKyA1gKnCIiM3DS/v8EfB7AGPOsiLQCfwD6gC+OiAymiJsBhUmjLOQf16/RDhC8M/HxeTfE9iDueYudMNZsbWfhfb9Pu2ou67mLMbEDGc9JBcS9qb/tnd3Mnvd5pv0u2N3S3dvP1fdu46Z1zxV1bxrqkjD9bOvnZ0tjTsSFfQf6eKurNz3OfKnO3rF6U56BUIq0Je00Q1Du8yvVQ9kMhDHm7yyHbw94/jeAb5RrPENB9uS84YCPXlKRQcV8ndMK/ccNqsuwTk4pfPSDYuObeLnl7IKuKZvrf/5shh8/bEBccK7fTysqm2LuTT4XmTd9d9bb67m25me8h910DGTuZoI0rbIppoYiqGAvigm83OdXqodKZDGNSGxBTd+gbZFBxY++f3KOwfFOWoVW8jbPbOS8E/3/oX0npzJ2PUuttNNjCBkQNzjX/3cfmmp9vo1896aYDKvmmY1s/Phuvn3IvzGFXcQwNMWcOpF5sQ3p5/lpWmUzPpkoOCmh3AV7Q1IQqFQFQxqkHsnYJucVvQtYUbOaJJ78/CIn0jVb27l/S3uGX1yA804cDHIX+o+bOqcfvvUQNvXSEip6vTuvbFb2LcgoyoPB4HM2HZ3d3NB8AgA/+e9XS16hF5JAkIHFtZjtFmv0xCI6Orupq02w70BfRgV7Iibs7+lLFxyGdeWE6tFdAuU+v1I9qIGICNtE0zYwF3pg+fgHqe1+raSJ1GaADPDYHwfz/wv9x7WdM0XejKMw3dlCBFSz3WLZpLrbLa5ppYE9ML6JlfvPo+1gbh1l6jpvaD4hbSi8/S1slGVS84vRuG6x1L3NNkDZLsqunsHYRaqPRoPs5o21kyH+Td/7X4x7rBDKfX6lelADERF+k3PbwFy2mNPZ2FJ4lpGXMLuDQv9xg1bPhRSsWQPj8Y15ZSHWbG3nq62/z7vS/yUf4dT5X0qPZ8bWdpIPPM3p/b9OT5o7qafj2EVA5n1OTcI2Q1TWokRLjKbDTApMtc02GEcufgjIlTaZwq5AiY3UObY9tIrLeu6iIbaHA8kp1MaXAaVLckQm/6JUPWogImLhmcdw9b3brI9F4ZsNszso9B/30kOfdCaQLMG9xrpkybUZZxy6hNqADK7U64KMgzUjansrzY8vY378VUx8MIjWyG4an14K0yYETppDMqlZ+1kLTbHdbBx7FcSXEGaiTn3mNmmTfNlwzfGNNMttEHPGUNu9M1LdpqLdb8qwQoPUEdE8s5EJPj0UonBj5JPlSFXlftk1UjdfOCOwMnlT2218re+7NMV2ExNoiu3mnxOrOL/mdwWtqv0C4+O6X7O/wHW/BLm3wPHR51RXe/pzC5Y/3t5udtx3bWEV5uUgo5814G3eWkBP8dRn7pfJFZgNV27dppDS8crwRg1EhCw957iyaSsFZdUU2qhmzdZ2jtryT9SQ2dOhRvr4x9gdBY3L1/U1EJzBlf26ebENbKi5ipfGXszGsVdxy7HP577WNull0SB7rNdfVDOfUnA7zDlGImuXFHKiTn3mfjIigdlw5dRt8hhqMAUZPWV4oQYiQqIUn/M7v023qND01ut//iwTeMf6WJ15p6CJ0293tLrmUzmpsN2MZdNRV+a8LuVjT+1mGmU3s59emjvhhJjcUumv2ddfdDOfUilxom6e2ciUc79ZeFpxOXWbVFV21KAGImIikeYukELSW9dsbc+pNcimkInTz/U14+zL2XTC9bSbwY5x1/R8lks2HZGjGBvoY/fgK5SXejwr/dV7/WGr0G01B0ULJEI0E3WGy0qc7/nkWspYq6KqsqMHDVKPAApJb01N/G+aQ5kk+3Ief9McCpBXJyhFUPB3zrqjaT94a+YLBgbFAFOva+jO72Nfs7WdDfvPY5msyjAmxv3qGKjP0V7yXn++e7Sp7TZmb1nJb9lNR009K99ewLUP9LD5lTe5f0t78bISUQnshZTYGPwc6rnlhOuZ/eJ3ou8+55OlpaqyIw/dQYwACukrkVoxX993CQdN5msOmjjX910CDEpXhMFv15Rv1Z56XazOp/rZM+HctO457uv5cE5/7uvHXE3b/D9wuvlehnHIvv7Ae7S9leOf+jqNMhiwX55Yzen9v+Yn//1qaa6pYlb/RWCLsVyy6QjWnLIOWjqdeEhU71nO3YlSVegOYgRQSApnaiWdKkBz6ghy1U8NTqwi+5xh38f7XrbjGYRYZaeMStvA3AyRPumBloDr966qxycTjEvEctVlb15GkoMZQ7IJAnopKHU5TFFhiQypPlLElfRK9VJWue9yU3Vy31E0lC9zU/p8lctBJGICQoaYXpB8tl9xmvX5v/gKbPkxmH6QOJz4GdY0fjU9ucd8xO2CpM5Dv39LHTmZRsCAEY7uuafg960EgfLky0sTUFRGHmHlvtXFFBVRpP5FlT4YkKNuy7Tyq9/IpnfA5HRMi0Twbnsr/P4exzgAmH76tt7Nhge/n3aZ2CbpfCnEoTOXfHznO5nE331o6tC1hS0Bv2wy1UdSSkF3EFHh00SH8VMd/+9QnaOAJkVenSJPKVfBlLxKDdmACCAuwoAxoSqhgxoiZVRpZ8uC4KTkPvPBf2L2vM8Pi+Y4Be3WlFFPxRsGjTqiSP0r9RzbW+HBLwyuxFNYZBmyJxTDYL1vY12S/QcHVUTzMT6ZKG0SzSNu56XfGP4UYIy84/BzSwGZPbjPnUPzObdmuPaSpy1htnu/qklWwu8+qz6SUg7UQERFFKl/ec4ROAmndg5+jfiyJmE/ddiUb922Ik3EnAl3IGvOfftAb0YXuIJTQQPE7bKJi6cjRla8ZtNRV3LtpiPSYw4j950O5C4ufyC5VLI/kxPfXs/sNZ/DrN2DjG+i+bQlznUoSkRoDCIqokj9CzhHXqmIfDIUWYYqTArqeSc2pifkuAgXnjSV8cnceMWAoaDYRA6W6/br+dBvjGMYVhwJD3wuI15z/FNf5/T+X+e8Ji5i7+znMlwa3XiNeqr6vFF2Iyp3oZQJNRBREUW+e8A58gZcg9xQFkOVL6iZaiaUWoX3G8P9W/JXYXsJPfFmXfdrTGZx72UZdQ0pPnPok85E2P1mzmNJDrJoTO4EOWAMLy8/m8ZhHsj13s+w1eeKUgrqYvKhKJ96FPnuPufIKxXh556SuNVQBfWO8OvTUEgvZYCLxj3Bay3/wHvMLt6Qybz6wYXMnvd5+5M91/2XAcHlRYl7odvf8NjiFikDMNwb3XjrSopSeFWUAtEdhIUhV/4MQd40Rpt7Kl4D48bDA5fTteL9tNywNK0nBE5ToDqPy2hcIsbmV97k2gee5mz5bVpddUPNVel+ymF7Kc+LbeDr5odOX2Zxmtwcv+U6NrXdVvS11iUTTme+AHaSGbfwGoByiylaiVAW21sN7terW+UulCgpW5qriPwr8AngDWPM8e6xicC9wDTgT8ACY8xbIiLAt4GPA13AZ4wxT+V7j3Kluc5Z/qi1ArixLsnGj+/OLWSDsleVhkpj9AZtkxPg4DswMOgS6jI1addNMhHnvBMbM3SGwMlkOierg5n3tVvefXpGL+XsTKFUa8xG2Y1YHP+vMZkpLS8Uf62Pn2nfKQEkkmw64Xqu/sPR1ZHJU0DKcVhSO9tZb69nec3tmRXgJZ5bGT2ETXMtp4H4K2AfcKfHQKwE3jTGLBeRxcAEY8w1IvJx4EocA/Eh4NvGmA/le49yGQi//Pn5sQ18+5B/y/yHjyVABPo9/uBS/1F9qqkLcnuFqC3wcxdtqLmKpliuC6Pd1LOp+Tc5fZRTk3l2a0wbA0aIXd8ZeJ2p81qv1TbpAiQnwlkrqmty9KtrASfeUupCosxV98rIpeIGwh3ENOAXHgPxHHCKMWaniBwOPG6MOUZEbnN//kn284LOP9Q7iCfG/YPTDzgMhRS3eYlq1RkgH/G+g3cHvvSlsRcTs6z+DcLa+XZ9pm0PreK63lsZIwOB536Ld/GJcXeWtgIeLhOjz2eQRlf8SoWo1kK5wzyT/mvAYe7PjYB3qbXDPRZoIMqFXzDzMHwCgzYKKW775TWDWTkSA5M1yebpP5zCu+r+r3H1VmNmqy3IfU49TZYgaHdyirX/9J2zX3H6H+cxDgC1posT317PwjGtOQJ5Ya+z0GSAilVC+yUOpAh7vYpSISoWpDbO1qXg7YuIXC4im0Vk865dIVfzBdIc38iWQ6/mpXGfZEPNVXzm0Ce58dwTkEKL3vKxvRXWXJGZspltHFLkMTjZgfVv9lxAt6nJeI6ttiB7o5CIC7dwEV1ZryWRZGXvhdZU26lP3ZS3FWiKsdLPtxPfp9E3CydgQi2CiiYc2BIHsikl60j7QitlZqgNxOuuawn3+xvu8XbA2xSgyT2WgzFmlTFmljFm1uTJPr16S8F18dR27ySGoSm2mxa5zdHrsf3DxxJOtpCXsAVyjyzLCCIHksfgZNdJtA3MpbX/r+hzP+I+E+Nn/X+VU1tgGKxOnlCbAENO34Wu5OFwzq3cse+k9Ou8PaQPM4UZahGsAWxwiu5ablga2QResVajkFXf4UOxWUfaF1oZAobaQLQBl7o/Xwqs9Ry/RBxOBvbmiz+UjaB+u7ZCtubvw/zvFVcgF3b1GMLgZNdJzItt4IL4bxiDsyMZIwNcEP9NOl3VSyp11RhHsRUcAzO351bed/BuTuj8Fmv656TTT7N7SPtN9sUQE7is567IVvmFtGMtC9MXOLGoc39UdKW9teWp9oVWhoCyxSBE5CfAKUC9iOwAlgLLgVYR+SzwCpCaRR/GyWB6ASfN9e/LNa68BAjmOb7sejo6Vzi+7FOOoXm668suxo+cz0cNTqHbBy7Oe/7s5jy2StugJjjdvf2+PSL6jeHaB55Op8UuEksVb/b5GMvP+j7CBWN+mxtryEOD7KG7J5pmN5ce+iSX9dxFg+ymwwy2JY2qejp0fKPIJjvZKb8pF9n8+A67fIgWyikRUjYDYYz5O5+HTrM81wBfLNdYCsJn0u7yCdBCSEE6G6ctcWIQQW4mtzfCDdvexR37TrJPQttbWS9LGDf2tXRnOL9KW98KXAupmobU5PrPmy7kg9POoWGH/zkMQoeZxIpeZyLePPAXfCvxw7zZTV5SgfT2zm7WbG0v/v5ub+U680PGxA4A0CROK9EaE2PumVcUd04PfpM3+PxNFFFp7+ciez1uT0LQQjklSrSSOhsfwTy/AG1JvuzpCxwXVXLi4DHJ/UjG9B/gsp677EFWb8xETLqfsvHx+wwEfOQTahNO1zhy3UhNsd18c8yPqH+5LaCKdypzxz3AnIO3pmMdbQNziRFgHOLBgfSSXE2PLGNM/4GMQ7XSw7JD7o8ki2ko4ht+rrAbey7QvtBK2VEDkY2PYJ43QJtiXmwD93Z9rrQskukL4JqXoWWv8+VTl+LVGMqYhCy+6FrpIe6TIBb3WckLsPSc40jEHQPh56JaOKaVRwZm5Eh+Dxjg6DOsE5qvQUlOhPnfoyt5OANG2DFQnyPSl3GthWbt+Lhb8sl1hGHN1nZrrQw4RjwdKygRP1fY5nefXro4pKLkQcX6bFhcAQ0PZxbP5VQNp7JIUq8vgGLqF9o7uzly8UO8OG5HQVa+O3k4yf54jrzGJ09+LwBdvY4BCXJRXRD/TU4hXUyA39/DpYe+ix9nGdNHBmbw6divMseZSKYrn2vdKvGr791mfc+Ozu7cAsIw9zuKHh0WUq6lICJxQQIfff9k7nriz9bjTD9VDYJSVnQHERKvUBpEJ7dcbP0COCmqHQM+hW/JiVYXRO1Zy3IE626+cAY3NJ+Q4RrxW/UPEPMPUPd2syhxb8Z9mhfbwIL4b7L+0ASaTqLrl0sYaKljx5Kj2PbQqgzhQC8Ndcnisnai6NFhweZashGFu+mxP9pTiP2OK0qU6A4iJDktHWO5stJAYVkk21s5ee3XeDa2i46awQwbeuGaRCuHsycddLb1RgBY2bcgV/8otToHa9ZMM/ZVrdc9ZDtvl6khSXD2Um33a5x3YiM/+e9X6TeGaxKtJHMMisG8/Gtq3d+aYrtZ1Pt99vb38ovY3HSqLXjUWNcW0Y61yMyhfBSSIltqOm3F03SVUY0aiALI6E18c3j3hTUVMr4R1n6RKfQ4C2rZzT8nVkGvE9htO+goruZbqaYMyqIxrTTF9qRbb179cL37freycH5u1pNt0vSmynrP2yCOoVpd8ykWJe6lttu/ROWtxHu4+4k/pyMgh/vIk2SH0Gulh6/G7uXxmlOorRmTmzb6eJHuoih6dGSRnVKc77nleK/s81ZMTkQZ0aiLqVhCui/8pB4O/nxhpgIsUCN9tCTuBAZ7FXhdQbdcOMPaFa1tYC4X1v4IWjpZc8o6Ltl0hL+0REAF7sIzj0kHqVPnndtzK8f03sPmv/0NLdddT+1Zy3zlI/ri42jZf15GeNw3QG2hQfbQ2dXLxsWn8vLys9m4+NTBSa5M7qJiyHY3giNRksgKzETRjMj2Xtnnrcb+JcrIQHcQxRLSfeGXClkT77SedgL70hNAxo7FQ7aQoDCYOdPV08fp/b9mUU1rRnFYS1uMm9Y9x71d19IUs/vym7/8DC1tz9LZnVmX0Ttg0kVra/rnsM18nssG7qIxthsjMWJmAMZP5Yb957F2IDNAbXWBIdhkuDrMJP8Vd5ncRcWQ4270qNpGvYr3ey/veYPSbXUXoZSCGohSmL6ANf1znH/e17tpeDjJwv7Mwi5fX7Eh18+Cc+zGc08AHNnx7EnBO2G0d3ZnTLXtnd052VWp4rDFB6Gtey4NY4NbVe7tthftdbhFa45xOokf4xgCb9OiOxY/lPO6lKvqazU/Ywq7nYn96DPo23p3Ro1Cl6nhFi4KXnGHuN9DhZ/xLsdY/N4rhcYplHKhBqIEwlTS+vmQ3zSHMkn25RwXt2gu6LypL1vfiiCJDfqcLCRr4Zrryw/yeXtXqteP+Vc+GX+UOAP0r41B+9/TUPcJ62t/PjCXU+d/KWOSG/Pek+n65RLGdb9Gx4AT35h79uWBE2HBlcujhLBxCkUpFI1BlECYSlqbDxng+r5LOGiyjscScNaK0BW6thWiX/1Co7uTsEpeeHz53vEOKrZ+kvVyBSe+vd4Z+5h/5ZL4rxgjA4jgCAJuvp07D7s351pTNRY5E/j0BdRe80diLZ00LXuRluuuzzvJl1q5bBW9K5UqkNwOE6dQlGLQHUQJhNnaZ/uQU+4gW5ZQ07k3wvQFtN+T66qZF9vAoq5WaNmT9r831NXnrBw7OZSJ5O5MBhBr/UKfiTHGU4GbGu+2h1axqHfQVVXbvZPlidXQC5+MP2pVcD3qzz/jxvleCeMAABGISURBVHOXlOaHD+gWV4orpSy7j2KK98Ket4BYS5g4haIUQ1lbjpabcrUcDYtfa9LGuiQbF59a9GuOuvbhjF7R1l7PiSSbTrieSzYdkbGq3lJzOZNiuQbCGLss9wBCrCU3YN614v3WdNYdA/U0ym5/ie+WvT4PhCBPu1W/eweOjtTSc47znRSL+azy4tdzuth2sxBdy1lFCSBsy1F1MZVAMVv7wNe47orna/6ODTVXpXs3+FVtz37xOxmpsBNqE0ywxDUCEcl0i2xvpWvF+0l22WsdGmQP/X5/NpLrSiuIPNXSfu46gLe6ell43+993UZlCeQGSMMXjfZ5UKoIdTGVQLFb+3GJWHrVX5dM0DLvOKdwzl05xmQw+4he/7iC2bsjJ8Ola8Xh1pX/WxzKONOTY2hiZmDQLQKOMmxvtz3DCicV9SVzGB+JPZuxizCATLNXe4fGZ2Id2LuDNo/s91dbf5+xw0rR2298UzvLEsgth9ZTOYyOohSJ7iBKpHlmo72wy0LKD/5W12Aq6cE+N2jso8q6aEyrb7FZh5mUs2K2FbJ1mRpaei9hce9l9BnLR55aodpWr1nnWdm3gPfJ6zkuJgF48yXf16YIDBT7TKwdA5PShV/NMxsZCHCL+u0IyhLILUfxnp9x0T4PSgVQAzGE2LJwTu//NbMe/CuMT2e5BtnDyr4FdGUJ+BkDSQ6w7aFVmS/Ikiv3SmgH9mbYu8N3lWqME3tYmbjC6cbm13QozyrXW/F7jiuVPm/NsXS0HMWmttvYdNSVvkKF3mylSw99ki01l/Py2It5eezFPDX28rQ7zm9H0DyzMacyPVW/UTQ+0vAlxQqqqGJcUdTFNITY+kbnVhlnvcZMSmc8LR1zJxNlH+L2gZ7IPhb1fh+2H5c5KXn0hy7MCs52mHqabBN8aoVqMVTtpp7Tzfe48ewTmPDzZ+nst2dK5Vvlpgxk9nU3sJsJW65jmXyBf++9LCOzyytUmJL9/nr/d4nH+tLnncg+/jmxini/8Ndn+jcmzFdwVhRRaz1VUcW4oqiBKDNeEbWYSIbv3Bp89tDtkfluG5jLIlqRrCB0rfQ4k4nPBLLwzGMy0jtX9i1gRWJ1psKqd4WalUHTZWpYXfMpbjzbWW03vvoLDtmS68bplwTxPKvclIG0XXdSevjiwD3MHbjV2jMbUrLf1xA3fTmP1Ugf33jXA9TO/GbgGIYFZRAYVJRiUANRJtZsbc/RNcoOrAb2hx4/lWeOupLfbjsS3JhFMa6d7ED6lnefzjPHTmP2i9+xrlA3/ektpj51E+8xuxiQGEnpoeWQ+yF+HLDAeZ3kKszGx70r76SWChT7NyPykVAnhOw30XSKGymouqsSBWogykB2UVY2Kf0kP3fPa0zmL19fQcPBJEvP8YjAdeVxD/mQ61o5Ffj84K9ueq3Zu4MGM4l1/TO4IP4barF0y/MzRt1v5R7LKvi65dgruWTTEf7XLZOsEucZNQ5+st+ggVwXlSRRoqIiQWoR+ZOIPC0i20Rks3tsooisF5Hn3e8TKjG2gvCRWcjXcSy1j7AFn7tMDd/suSBDthlg4+JTaTr/xugDmNtb6Vt7Jex9FcHQKLv5dPxX/t3y/CZhieXUU2TLis9+eil3zn6F78UutgbdJyX6uHP2KzkS50vPOY6b1j3HkYsfomX/efSLZV0Tr4kskFuqJEdZJD0KoFRJEkVJUckdxEeNMd5l5GLgEWPMchFZ7P5+TWWGFoIAmYWOzkNynj4vtsENvg5KcNvkNrK7x2XINpchgPnWz69jgkdVFcjpN51m7w44d1VupS+A6adv7ZXOH9T0Bb4FX7Nf/A6zW55hU1sTRz/1T4w376SD7mN7O5n99FI2ejKB1mxtZ8OD3+defkrD2N109NTzUz7K+WOfZGyvW7WdnJjub10qpa6+q2H1ruquSlRUk4tpPnCK+/MdwONUs4EIqHhtqLs1I3PIT4I73T3OJyibIuMfO8IA5pqt7czred23KC6H8U3p9x548PNOkZ2HMf0H6PrlEmqnL8hb8DV73ufhxe/A3ncyH0/tVNz32fbQKpbJqox7d755lO7eWsYikWf5lNpboRp6M6i6qxIVlaqDMMB/isgWEbncPXaYMSZVAvwacFhlhhaSgAkwuzNboAS3SzIRpy6ZsJ6y4H/skAqjN617zrcIbyCrFq2bsYMunOkLHJ+QhXFdrzmNi5JT7GPzuqhCVA1f1nNXzr0bK/3U8Q7ZHfGioNTVdzWs3lXdVYmKShmIucaYDwJnAV8Ukb/yPmgcBUHrDCQil4vIZhHZvGvXriEYqg8BFa/NMxs5pGZwc5Yvaycuwo3nnkDLvOM4v+Z3rsT2xWyouYrza35X2D92QEvRbDo6u33jIP/e/zfsGKhnwAjtpp5nPvhPGav0joFJ1rfvMJNo7+xmyf7z6IuPy3wwO14SVDXsGrnGWECmV4oItYr8jHFYI13q66OgLEWByqikIgbCGNPufn8DeBA4CXhdRA4HcL+/4fPaVcaYWcaYWZMnTx6qIeeSp+LV25ktSCoDYMAYJ9MovpHlidU0xXY7ekwxxxXVHN8YflwFiL011CVpG5jL4t7L0sYgVXm9Qi5jbs+tvO/g3Zwd+wHtUz+R8drVNZ+yGpZU3cZ9PR/mBvlCcJWx3z08+oy0kQvr/YpKq6jU1Xe1rN4LkYBRFD+G3ECIyCEi8q7Uz8AZwDNAG3Cp+7RLgbVDPbaCyCOz4F0x+q3SU5Np+rmPLMtowwmOXz9jcs/nPgpw22Rn13z0/ZNJJuK0DcxNG4OP9NzKniPn0ds/uIHr7O5l4c8ylVJnnH05S8zlOYbFG2C/Y99Jjux1S6fzPTtO4HcPn//PQE0oKxGluJa6+tbVuzKSGPJ+ECLyPpxdAzhB8nuMMd8QkUlAK/Be4BVggTHmzaBzVbofRBDZ2SzzYhu4JtHK4WRmK3l7OtNSh92zJs4kG6ZXgE+Pgq7k4Zy475aMAGqqHiPuVng3ugVV2QV+KeqSCbYtPSPjGlO9sW0U3WvB9z7gZCz17IP+rEpw7ZegKKGp2n4QxpiXjDEfcL+OM8Z8wz2+xxhzmjHmaGPM3+QzDtVO9kpyy7tPZ1Pzb2hrfpYLa3/Ezwfm5q4u8yh5dv1ySX73kY/bZmXvhTnZNakpuN+YtBukeWaj1TgAOcdTboxbLpxRlFvFt17A9z5MhWtehvnfi1YgT1EUK9WU5jri8BOH83M3bDrqSo5/6uskOTh40I1rrNnazryu1+wpqV63kk+txB335NZmeCklFbOYvhiB9QKnLbHvlLxZVGoQFKXsqIGoEtZsbefaTUdwev9n04VzO5lExwmLmD19ATctf5RZZlI4qQ3LBNrwsH+7zhSpVMwJtYmMnhUpJtTa03ChcKXUwHqBxapoqijVgBqIKiE1YbaRWTjX+IckG+e5KamxBTny4F2mhtoQEhPZqq42UsHypeccx8L7fp8RqE7EhaXnHFfMpVnJWy+guwRFqTjaMKhKyDdh+qWkrkxcEWoi9cZEINdT5Y0ZNM9s5KbzP5CRiXPT+R+INBOnGuoFFEUJRncQVUI+eYTUDqCtd3CHkUzEufHsE0K/h9cNlE8OuizNdTx89P2TueuJP1uPK4pSHaiBqBJsLqDsVT0UFggOotwGIB+P/dFeBe93XFGUoUcNRJUQxgBUelKPkmrQLFIUJRg1EFXESDIAvrhNhF4ct4OOgVx5c41BKEr1oAZCGTo8leAxBrWmUrLnqjiqKNWFZjEpQ4dFSDAle66aRYpSfegOQhk6fIQEm2J7itNsUhSlrOgOQhk68mhNKYpSXaiBUIaOPD00FEWpLtRAKENHnh4aiqJUFxqDUIYW1VhSlGGD7iAURVEUK2ogFEVRFCtqIBRFURQraiAURVEUK2ogFEVRFCtqIBRFURQraiAURVEUK2ogFEVRFCtijMn/rCpFRHYBrxT4snpgdxmGUw3otQ1P9NqGH8P9uo4wxuTt7zusDUQxiMhmY8ysSo+jHOi1DU/02oYfI/W6slEXk6IoimJFDYSiKIpiZTQaiFWVHkAZ0Wsbnui1DT9G6nVlMOpiEIqiKEo4RuMOQlEURQnBiDQQIjJRRNaLyPPu9wk+z/sPEekUkV9kHT9SRP5bRF4QkXtFpGZoRp6fAq7tUvc5z4vIpZ7jj4vIcyKyzf16z9CN3o6IfMwd0wsistjy+Fj3c3jB/VymeR671j3+nIicOZTjzkex1yUi00Sk2/MZ/XCox56PENf2VyLylIj0icj5WY9Z/zarhRKvrd/zubUN3ajLhDFmxH0BK4HF7s+LgRU+zzsNOAf4RdbxVuAi9+cfAv+n0tdUyLUBE4GX3O8T3J8nuI89Dsyq9HV4xhoHXgTeB9QAvweOzXrOFcAP3Z8vAu51fz7Wff5Y4Ej3PPFKX1ME1zUNeKbS11DitU0DpgN3AueH+dushq9Srs19bF+lryHKrxG5gwDmA3e4P98BNNueZIx5BHjHe0xEBDgVuC/f6ytEmGs7E1hvjHnTGPMWsB742BCNr1BOAl4wxrxkjOkBfopzjV6813wfcJr7Oc0HfmqMOWiMeRl4wT1fNVDKdVU7ea/NGPMnY8x2YCDrtdX+t1nKtY04RqqBOMwYs9P9+TXgsAJeOwnoNMb0ub/vABqjHFyJhLm2RuBVz+/Z1/Bv7hb461UwIeUba8Zz3M9lL87nFOa1laKU6wI4UkS2isivReQj5R5sgZRy36v5M4PSxzdORDaLyBMiUk0Ly6IYtj2pReRXwBTLQ//o/cUYY0RkWKVqlfnaPmmMaReRdwH3A5/G2Sor1cNO4L3GmD0iciKwRkSOM8a8XemBKXk5wv3/eh/wqIg8bYx5sdKDKpZhayCMMX/j95iIvC4ihxtjdorI4cAbBZx6D1AnImPcVV0T0F7icAsigmtrB07x/N6EE3vAGNPufn9HRO7B2VJX0kC0A1M9v9vud+o5O0RkDDAe53MK89pKUfR1GceZfRDAGLNFRF4E/gLYXPZRh6OU++77t1kllPQ35fn/eklEHgdm4sQ0hiUj1cXUBqSyIy4F1oZ9ofvP+RiQyk4o6PVDQJhrWwecISIT3CynM4B1IjJGROoBRCQBfAJ4ZgjGHMQm4Gg3c6wGJ1ibnf3hvebzgUfdz6kNuMjNBjoSOBp4cojGnY+ir0tEJotIHMBdiR6NE8ytFsJcmx/Wv80yjbMYir4295rGuj/XA3OAP5RtpENBpaPk5fjC8eM+AjwP/AqY6B6fBaz2PO+3wC6gG8fXeKZ7/H04E80LwM+AsZW+piKu7X+7438B+Hv32CHAFmA78Czwbaog6wf4OPD/cFZa/+geWwbMc38e534OL7ify/s8r/1H93XPAWdV+lqiuC7gPPfz2QY8BZxT6Wsp4tpmu/9T+3F2e88G/W1W01ex1wZ8GHgaJ/PpaeCzlb6WUr+0klpRFEWxMlJdTIqiKEqJqIFQFEVRrKiBUBRFUayogVAURVGsqIFQFEVRrKiBUJQC8Kh1PisivxeRr4pI4P+Rq8568VCNUVGiQg2EohRGtzFmhjHmOOB04CxgaZ7XTAPUQCjDDq2DUJQCEJF9xphDPb+/D6f6th44Avh3nIJEgC8ZY34nIk8A/x/wMo5664O25w3RJShKaNRAKEoBZBsI91gncAyOdPyAMeaAiBwN/MQYM0tETgH+rzHmE+7za23PG9orUZT8DFuxPkWpQhLAd0VkBtCPI7BXyvMUpaKogVCUEnBdTP04qrpLgdeBD+DE9w74vOzLIZ+nKBVFg9SKUiQiMhmnJe13jeOrHQ/sNMYM4PTZiLtPfQd4l+elfs9TlKpCYxCKUgAi0o+j1JkA+nCCzd8yxgy48YT7AQP8B/BFY8yhrrT6Ohwl3h8Dv7A9b6ivRVHyoQZCURRFsaIuJkVRFMWKGghFURTFihoIRVEUxYoaCEVRFMWKGghFURTFihoIRVEUxYoaCEVRFMWKGghFURTFyv8PbK5x+Dleaj0AAAAASUVORK5CYII=\n",
  193. "text/plain": [
  194. "<Figure size 432x288 with 1 Axes>"
  195. ]
  196. },
  197. "metadata": {},
  198. "output_type": "display_data"
  199. }
  200. ],
  201. "source": [
  202. "import matplotlib.pyplot as plt\n",
  203. "\n",
  204. "plt.scatter(X_train, y_train)\n",
  205. "plt.scatter(X_test, y_test)\n",
  206. "plt.xlabel('Data')\n",
  207. "plt.ylabel('Target');"
  208. ]
  209. },
  210. {
  211. "cell_type": "markdown",
  212. "metadata": {},
  213. "source": [
  214. "Linear regression\n",
  215. "=================\n",
  216. "Create linear regression object, which we use later to apply linear regression on data"
  217. ]
  218. },
  219. {
  220. "cell_type": "code",
  221. "execution_count": 20,
  222. "metadata": {},
  223. "outputs": [],
  224. "source": [
  225. "from sklearn import linear_model\n",
  226. "import numpy as np\n",
  227. "regr = linear_model.LinearRegression()"
  228. ]
  229. },
  230. {
  231. "cell_type": "markdown",
  232. "metadata": {},
  233. "source": [
  234. "Fit the model using the training set"
  235. ]
  236. },
  237. {
  238. "cell_type": "code",
  239. "execution_count": 21,
  240. "metadata": {},
  241. "outputs": [],
  242. "source": [
  243. "regr.fit(X_train, y_train);"
  244. ]
  245. },
  246. {
  247. "cell_type": "markdown",
  248. "metadata": {},
  249. "source": [
  250. "We found the coefficients and the bias (the intercept)"
  251. ]
  252. },
  253. {
  254. "cell_type": "code",
  255. "execution_count": 22,
  256. "metadata": {},
  257. "outputs": [
  258. {
  259. "name": "stdout",
  260. "output_type": "stream",
  261. "text": [
  262. "[988.07836941]\n",
  263. "150.80798145969447\n"
  264. ]
  265. }
  266. ],
  267. "source": [
  268. "print(regr.coef_)\n",
  269. "print(regr.intercept_)"
  270. ]
  271. },
  272. {
  273. "cell_type": "markdown",
  274. "metadata": {},
  275. "source": [
  276. "Now we calculate the mean square error on the test set"
  277. ]
  278. },
  279. {
  280. "cell_type": "code",
  281. "execution_count": 23,
  282. "metadata": {},
  283. "outputs": [
  284. {
  285. "name": "stdout",
  286. "output_type": "stream",
  287. "text": [
  288. "Training error: 3960.4058766864073\n",
  289. "Test error: 3811.1989929980004\n"
  290. ]
  291. }
  292. ],
  293. "source": [
  294. "# The mean square error\n",
  295. "print(\"Training error: \", np.mean((regr.predict(X_train) - y_train) ** 2))\n",
  296. "print(\"Test error: \", np.mean((regr.predict(X_test) - y_test) ** 2))\n"
  297. ]
  298. },
  299. {
  300. "cell_type": "markdown",
  301. "metadata": {},
  302. "source": [
  303. "Plotting data and linear model\n",
  304. "==============================\n",
  305. "Now we want to plot the train data and teachers (marked as dots). \n",
  306. "\n",
  307. "With line we represents the data and predictions (linear model that we found):\n"
  308. ]
  309. },
  310. {
  311. "cell_type": "code",
  312. "execution_count": 24,
  313. "metadata": {},
  314. "outputs": [
  315. {
  316. "data": {
  317. "text/plain": [
  318. "Text(0,0.5,'Target')"
  319. ]
  320. },
  321. "execution_count": 24,
  322. "metadata": {},
  323. "output_type": "execute_result"
  324. },
  325. {
  326. "data": {
  327. "image/png": "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\n",
  328. "text/plain": [
  329. "<Figure size 432x288 with 1 Axes>"
  330. ]
  331. },
  332. "metadata": {},
  333. "output_type": "display_data"
  334. }
  335. ],
  336. "source": [
  337. "# Visualises dots, where each dot represent a data exaple and corresponding teacher\n",
  338. "plt.scatter(X_train, y_train, color='black')\n",
  339. "# Plots the linear model\n",
  340. "plt.plot(X_train, regr.predict(X_train), color='blue', linewidth=3);\n",
  341. "plt.xlabel('Data')\n",
  342. "plt.ylabel('Target')"
  343. ]
  344. },
  345. {
  346. "cell_type": "markdown",
  347. "metadata": {},
  348. "source": [
  349. "We do similar with test data, and show that linear model is valid for a test set:"
  350. ]
  351. },
  352. {
  353. "cell_type": "code",
  354. "execution_count": 26,
  355. "metadata": {
  356. "scrolled": true
  357. },
  358. "outputs": [
  359. {
  360. "data": {
  361. "image/png": "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\n",
  362. "text/plain": [
  363. "<Figure size 432x288 with 1 Axes>"
  364. ]
  365. },
  366. "metadata": {},
  367. "output_type": "display_data"
  368. }
  369. ],
  370. "source": [
  371. "# Visualises dots, where each dot represent a data example and corresponding teacher\n",
  372. "plt.scatter(X_test, y_test, color='black')\n",
  373. "# Plots the linear model\n",
  374. "plt.plot(X_test, regr.predict(X_test), color='blue', linewidth=3);\n",
  375. "plt.xlabel('Data')\n",
  376. "plt.ylabel('Target');"
  377. ]
  378. },
  379. {
  380. "cell_type": "code",
  381. "execution_count": 90,
  382. "metadata": {},
  383. "outputs": [],
  384. "source": []
  385. }
  386. ],
  387. "metadata": {
  388. "kernelspec": {
  389. "display_name": "Python 3",
  390. "language": "python",
  391. "name": "python3"
  392. },
  393. "language_info": {
  394. "codemirror_mode": {
  395. "name": "ipython",
  396. "version": 3
  397. },
  398. "file_extension": ".py",
  399. "mimetype": "text/x-python",
  400. "name": "python",
  401. "nbconvert_exporter": "python",
  402. "pygments_lexer": "ipython3",
  403. "version": "3.5.2"
  404. }
  405. },
  406. "nbformat": 4,
  407. "nbformat_minor": 1
  408. }

机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。