{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "BYÖYO 2018\n", "\n", "Yapay Öğrenmeye Giriş I\n", "\n", "Ali Taylan Cemgil\n", "\n", "\n", "2 Temmuz 2018" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Parametrik Regresyon, Parametrik Fonksyon Oturtma Problemi (Parametric Regression, Function Fitting)\n", "\n", "\n", "Verilen girdi ve çıktı ikilileri $x, y$ için parametrik bir fonksyon $f$ oturtma problemi. \n", "\n", "Parametre $w$ değerlerini öyle bir seçelim ki \n", "$$\n", "y \\approx f(x; w)\n", "$$\n", "\n", "$x$: Girdi (Input)\n", "\n", "$y$: Çıktı (Output)\n", "\n", "$w$: Parametre (Weight, ağırlık)\n", "\n", "$e$: Hata\n", "\n", "Örnek 1: \n", "$$\n", "e = y - f(x)\n", "$$\n", "\n", "Örnek 2:\n", "$$\n", "e = \\frac{y}{f(x)}-1\n", "$$\n", "\n", "$E$, $D$: Hata fonksyonu (Error function), Iraksay (Divergence)\n", "\n", "\n", "\n", "# Doğrusal Regresyon (Linear Regression)\n", "\n", "Oturtulacak $f$ fonksyonun **model parametreleri** $w$ cinsinden doğrusal olduğu durum (Girdiler $x$ cinsinden doğrusal olması gerekmez). \n", "\n", "## Tanım: Doğrusallık\n", "Bir $g$ fonksyonu doğrusaldır demek, herhangi skalar $a$ ve $b$ içn\n", "$$\n", "g(aw_1 + b w_2) = a g(w_1) + b g(w_2)\n", "$$\n", "olması demektir.\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Örnek: Doğru oturtmak (Line Fitting)\n", "\n", "* Girdi-Çıktı ikilileri\n", "$$\n", "(x_i, y_i)\n", "$$\n", "$i=1\\dots N$ \n", "\n", "* Model\n", "$$\n", "y_i \\approx f(x; w_1, w_0) = w_0 + w_1 x \n", "$$\n", "\n", "\n", "> $x$ : Girdi \n", "\n", "> $w_1$: Eğim\n", "\n", "> $w_0$: Kesişme\n", "\n", "$f_i \\equiv f(x_i; w_1, w_0)$\n", "\n", "## Örnek 2: Parabol Oturtma\n", "\n", "* Girdi-Çıktı ikilileri\n", "$$\n", "(x_i, y_i)\n", "$$\n", "$i=1\\dots N$ \n", "\n", "* Model\n", "$$\n", "y_i \\approx f(x_i; w_2, w_1, w_0) = w_0 + w_1 x_i + w_2 x_i^2\n", "$$\n", "\n", "\n", "> $x$ : Girdi \n", "\n", "> $w_2$: Karesel terimin katsayısı \n", "\n", "> $w_1$: Doğrusal terimin katsayısı\n", "\n", "> $w_0$: Sabit terim katsayısı\n", "\n", "$f_i \\equiv f(x_i; w_2, w_1, w_0)$\n", "\n", "Bir parabol $x$'in doğrusal fonksyonu değil ama $w_2, w_1, w_0$ parametrelerinin doğrusal fonksyonu.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x10e5ae2e8>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "%matplotlib inline\n", "from __future__ import print_function\n", "from ipywidgets import interact, interactive, fixed\n", "import ipywidgets as widgets\n", "import matplotlib.pylab as plt\n", "from IPython.display import clear_output, display, HTML\n", "\n", "x = np.array([8.0 , 6.1 , 11., 7., 9., 12. , 4., 2., 10, 5, 3])\n", "y = np.array([6.04, 4.95, 5.58, 6.81, 6.33, 7.96, 5.24, 2.26, 8.84, 2.82, 3.68])\n", "\n", "def plot_fit(w1, w0):\n", " f = w0 + w1*x\n", "\n", " plt.figure(figsize=(4,3))\n", " plt.plot(x,y,'sk')\n", " plt.plot(x,f,'o-r')\n", " #plt.axis('equal')\n", " plt.xlim((0,15))\n", " plt.ylim((0,10))\n", " for i in range(len(x)):\n", " plt.plot((x[i],x[i]),(f[i],y[i]),'b')\n", "# plt.show()\n", "# plt.figure(figsize=(4,1))\n", " plt.bar(x,(f-y)**2/2)\n", " plt.title('Toplam kare hata = '+str(np.sum((f-y)**2/2)))\n", " plt.ylim((0,10))\n", " plt.xlim((0,15))\n", " plt.show()\n", " \n", "plot_fit(0.0,3.79)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": false }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "51b7f101a59e45e4b953d52a50bad75b", "version_major": 2, "version_minor": 0 }, "text/html": [ "<p>Failed to display Jupyter Widget of type <code>interactive</code>.</p>\n", "<p>\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n", " Widgets Documentation</a> for setup instructions.\n", "</p>\n", "<p>\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n", " it may mean that your frontend doesn't currently support widgets.\n", "</p>\n" ], "text/plain": [ "interactive(children=(FloatSlider(value=0.0, description='w1', max=2.0, min=-2.0, step=0.01), FloatSlider(value=0.0, description='w0', max=5.0, min=-5.0, step=0.01), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "interact(plot_fit, w1=(-2, 2, 0.01), w0=(-5, 5, 0.01));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gerçek veri: Türkiyedeki araç sayıları" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Year</th>\n", " <th>Car</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>1966</td>\n", " <td>91469</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>1967</td>\n", " <td>112367</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>1968</td>\n", " <td>125375</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>1969</td>\n", " <td>137345</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>1970</td>\n", " <td>137771</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>1971</td>\n", " <td>153676</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>1972</td>\n", " <td>187272</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>1973</td>\n", " <td>240360</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>1974</td>\n", " <td>313160</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>1975</td>\n", " <td>403546</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>1976</td>\n", " <td>488894</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>1977</td>\n", " <td>560424</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>1978</td>\n", " <td>624438</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>1979</td>\n", " <td>688687</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>1980</td>\n", " <td>742252</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>1981</td>\n", " <td>776432</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>1982</td>\n", " <td>811465</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>1983</td>\n", " <td>856350</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>1984</td>\n", " <td>919577</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>1985</td>\n", " <td>983444</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>1986</td>\n", " <td>1087234</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>1987</td>\n", " <td>1193021</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>1988</td>\n", " <td>1310257</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>1989</td>\n", " <td>1434830</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>1990</td>\n", " <td>1649879</td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>1991</td>\n", " <td>1864344</td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>1992</td>\n", " <td>2181388</td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>1993</td>\n", " <td>2619852</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>1994</td>\n", " <td>2861640</td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>1995</td>\n", " <td>3058511</td>\n", " </tr>\n", " <tr>\n", " <th>30</th>\n", " <td>1996</td>\n", " <td>3274156</td>\n", " </tr>\n", " <tr>\n", " <th>31</th>\n", " <td>1997</td>\n", " <td>3570105</td>\n", " </tr>\n", " <tr>\n", " <th>32</th>\n", " <td>1998</td>\n", " <td>3838288</td>\n", " </tr>\n", " <tr>\n", " <th>33</th>\n", " <td>1999</td>\n", " <td>4072326</td>\n", " </tr>\n", " <tr>\n", " <th>34</th>\n", " <td>2000</td>\n", " <td>4422180</td>\n", " </tr>\n", " <tr>\n", " <th>35</th>\n", " <td>2001</td>\n", " <td>4534803</td>\n", " </tr>\n", " <tr>\n", " <th>36</th>\n", " <td>2002</td>\n", " <td>4600140</td>\n", " </tr>\n", " <tr>\n", " <th>37</th>\n", " <td>2003</td>\n", " <td>4700343</td>\n", " </tr>\n", " <tr>\n", " <th>38</th>\n", " <td>2004</td>\n", " <td>5400440</td>\n", " </tr>\n", " <tr>\n", " <th>39</th>\n", " <td>2005</td>\n", " <td>5772745</td>\n", " </tr>\n", " <tr>\n", " <th>40</th>\n", " <td>2006</td>\n", " <td>6140992</td>\n", " </tr>\n", " <tr>\n", " <th>41</th>\n", " <td>2007</td>\n", " <td>6472156</td>\n", " </tr>\n", " <tr>\n", " <th>42</th>\n", " <td>2008</td>\n", " <td>6796629</td>\n", " </tr>\n", " <tr>\n", " <th>43</th>\n", " <td>2009</td>\n", " <td>7093964</td>\n", " </tr>\n", " <tr>\n", " <th>44</th>\n", " <td>2010</td>\n", " <td>7544871</td>\n", " </tr>\n", " <tr>\n", " <th>45</th>\n", " <td>2011</td>\n", " <td>8113111</td>\n", " </tr>\n", " <tr>\n", " <th>46</th>\n", " <td>2012</td>\n", " <td>8648875</td>\n", " </tr>\n", " <tr>\n", " <th>47</th>\n", " <td>2013</td>\n", " <td>9283923</td>\n", " </tr>\n", " <tr>\n", " <th>48</th>\n", " <td>2014</td>\n", " <td>9857915</td>\n", " </tr>\n", " <tr>\n", " <th>49</th>\n", " <td>2015</td>\n", " <td>10589337</td>\n", " </tr>\n", " <tr>\n", " <th>50</th>\n", " <td>2016</td>\n", " <td>11317998</td>\n", " </tr>\n", " <tr>\n", " <th>51</th>\n", " <td>2017</td>\n", " <td>12035978</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " Year Car\n", "0 1966 91469\n", "1 1967 112367\n", "2 1968 125375\n", "3 1969 137345\n", "4 1970 137771\n", "5 1971 153676\n", "6 1972 187272\n", "7 1973 240360\n", "8 1974 313160\n", "9 1975 403546\n", "10 1976 488894\n", "11 1977 560424\n", "12 1978 624438\n", "13 1979 688687\n", "14 1980 742252\n", "15 1981 776432\n", "16 1982 811465\n", "17 1983 856350\n", "18 1984 919577\n", "19 1985 983444\n", "20 1986 1087234\n", "21 1987 1193021\n", "22 1988 1310257\n", "23 1989 1434830\n", "24 1990 1649879\n", "25 1991 1864344\n", "26 1992 2181388\n", "27 1993 2619852\n", "28 1994 2861640\n", "29 1995 3058511\n", "30 1996 3274156\n", "31 1997 3570105\n", "32 1998 3838288\n", "33 1999 4072326\n", "34 2000 4422180\n", "35 2001 4534803\n", "36 2002 4600140\n", "37 2003 4700343\n", "38 2004 5400440\n", "39 2005 5772745\n", "40 2006 6140992\n", "41 2007 6472156\n", "42 2008 6796629\n", "43 2009 7093964\n", "44 2010 7544871\n", "45 2011 8113111\n", "46 2012 8648875\n", "47 2013 9283923\n", "48 2014 9857915\n", "49 2015 10589337\n", "50 2016 11317998\n", "51 2017 12035978" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%matplotlib inline\n", "\n", "import scipy as sc\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib as mpl\n", "import matplotlib.pylab as plt\n", "\n", "df_arac = pd.read_csv(u'data/arac.csv',sep=';')\n", "df_arac[['Year','Car']]\n", "#df_arac" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAH+9JREFUeJzt3XmYXFWd//H3t7o7SSchewhJICbREAREEhoEVwSBjCAgKIIbI86Tx9/4U9zQoPgTx1FZHAVnHDUjMDgy4CAh4MISEWFEQLJAFpKQBATSHUwgdEKS3vv7++Pehkp13eqq7rp1a/m8nqeeVN+6Xfccqjnfuud8zznm7oiISO1KJV0AERFJlgKBiEiNUyAQEalxCgQiIjVOgUBEpMYpEIiI1DgFAhGRGqdAICJS4xQIRERqXH3SBcjHpEmTfObMmUkXQ0SkoqxYseJFd5880HkVEQhmzpzJ8uXLky6GiEhFMbNn8zlPXUMiIjVOgUBEpMYpEIiI1DgFAhGRGqdAICJS42LLGjKz64EzgO3ufmR47GrgfUAnsAX4hLu3xlUGEZFKtXRVM1ffs5GW1jamjWvkktPmcva86bFcK847gv8EFmQcWwYc6e5HAU8Bl8Z4fRGRirR0VTOXLllDc2sbDjS3tnHpkjUsXdUcy/ViCwTu/iCwM+PYve7eHf74CHBwXNcXEalUV9+zkbaunv2OtXX1cPU9G2O5XpJjBBcBdyV4fRGRstTS2lbQ8aFKJBCY2deAbuCmHOcsNLPlZrZ8x44dpSuciEjCpo4dkfX4tHGNsVyv5IHAzC4kGET+iLt71Hnuvtjdm9y9afLkAZfKEBGpGsfNmtDvWGNDHZecNjeW65V0rSEzWwB8BXiXu+8r5bVFRCpBW2cPf9r8EnMOHMW+zt6SZA3FmT56M3AiMMnMtgLfIMgSGg4sMzOAR9z9U3GVQUSk0tz06LO8uKeDH390PsfO7H9nEIfYAoG7X5Dl8HVxXU9EpNLt6+zmJw9s4e1vmFSyIACaWSwiUjZueuQ5XtzTyefeM6ek11UgEBEpA313A++YM4mmEt4NgAKBiEhZ+MUjz/LS3tLfDUCF7FAmIlKtlq5q5sq7N7BtVzvD61M8v7ONY15X2jIoEIiIJKRvTaG+5SQ6unu5dMkagNhSRbNR15CISEJKvaZQFAUCEZGElHpNoSgKBCIiCTmoxGsKRVEgEBFJyHFZ0kTjXFMoigaLRUQS0NbZw0NbXuTQA0ezt7OnJGsKRVEgEBFJQLCmUCc//ugxJV1OIht1DYmIlFh7Vw8/ffBpTpg9MfEgAAoEIiIld/NfnmPHKx1cnMAs4mwUCERESqi9q4efPLCFt8yawPGzJyZdHECBQESkpH752PP8bXcHF59cHncDoMFiEZGSWLqqmavu3kDLrnaG1aX42+72pIv0KgUCEZGYZa4p1NnTy1dvX4uZlTxVNBt1DYmIxKxc1hSKokAgIhKzcllTKIoCgYhIzKaWyZpCURQIRERi9o5DJ/U7lsSaQlE0WCwiEqOunl7+vOUlDh7XiOO0tLYntqZQFAUCEZEY3fF4C8/vbOM/Pt7EKYdPSbo4WalrSEQkJt09vfzo/s0cPnUM73njgUkXJ1JsgcDMrjez7Wa2Nu3YBDNbZmabwn/Hx3V9EZGk/Wb1Np55cS+fPXkOZpZ0cSLFeUfwn8CCjGOLgPvcfQ5wX/iziEjV6el1fviHTRx20AGcWqZdQn1iCwTu/iCwM+PwWcCN4fMbgbPjur6ISJJ+u2YbT+/Yy2dOmkMqVb53A1D6weIp7r4NwN23mVn5dpqJiAzC0lXNXHXPBlpa26lPGZ0ZM4rLUdlmDZnZQmAhwIwZMxIujYjIwDLXFOrudb66dC2WKo81haKUOmvob2Y2FSD8d3vUie6+2N2b3L1p8uTJJSugiMhglfuaQlFKHQjuBC4Mn18I3FHi64uIxKbc1xSKEmf66M3Aw8BcM9tqZp8ErgBOMbNNwCnhzyIiVWHKmPJeUyhKbGME7n5BxEsnx3VNEZEkTR07ghcyNpwppzWFomhmsYhIEfxx43ZWPd/KgiOmMH1cIwZMH9fId895U1kPFEMZZw2JiFSKts4evn7HWl4/eRTXXjCP4fV1SRepIAoEIiJDdM19T/H8zjZ+ufD4igsCoK4hEZEhebJlNz/732f4UNMhvGX2xKSLMyi6IxARGYT0GcQpgzcfMjbpIg2aAoGISIEyZxD3OnzrN+sZOay+7AeGs1HXkIhIgSp1BnEUBQIRkQJV6gziKAoEIiIFmnTA8KzHy30GcRQFAhGRArg7Y0b0H16thBnEURQIREQKcO+Tf2PLjr18YP70iptBHEVZQyIieero7uE7v1vPnANHc8W5R1FfVx3fpaujFiIiJfDzPz/Lsy/t47IzDq+aIAAKBCIieXlpTwc//MMmTpw7mXcdWl2bZalrSEQkh6Wrmrn6no00h6mhJ8yekHCJik93BCIiEfpmEDenzQ+45vebWbqqOcFSFZ8CgYhIhGqbQRxFgUBEJEK1zSCOokAgIhKhUvcgLpQCgYhIFu7OxNEN/Y5X8gziKAoEIiJZLFnZzLqWVzj76GlVM4M4itJHRUQybNvVxuW/XsdxMyfw/fOOJpWypIsUK90RiIikcXcW3baG7h7nqg8cVfVBAHRHICIC9J84ds786cycNCrhUpVGIncEZvZ5M1tnZmvN7GYzyz40LyJSAtkmjt21ZlvVTRyLklcgMLPxZnaEmc02syEFDzObDnwWaHL3I4E64PyhvKeIyFBknzjWW3UTx6JEdg2Z2Vjg08AFwDBgBzACmGJmjwD/7u73D+G6jWbWBYwEWgb5PiIiQ1YrE8ei5Boj+BXwc+Ad7t6a/oKZHQN8zMxmu/t1hVzQ3ZvN7HvAc0AbcK+731tguUVEimbK2BG8sKu93/FqmzgWJTIQuPspOV5bAawYzAXNbDxwFjALaAVuNbOPuvsvMs5bCCwEmDFjxmAuJSKSl2lj+geCapw4FiXfMYLpZvZWM3tn32MI13wP8Iy773D3LmAJ8NbMk9x9sbs3uXvT5MnVtfa3iJSP+zduZ+XzrSw44qCqnzgWZcD0UTO7EvgQ8CTQN5riwIODvOZzwPFmNpKga+hkYPkg30tEZND2dnRz2e1recOBo7n2gqMZXl+XdJESkc88grOBue7eUYwLuvujZvYrYCXQDawCFhfjvUVECvGDZU/R3NrGrZ86oWaDAOQXCJ4GGoCiBAIAd/8G8I1ivZ+ISKFWb23l+oee4SNvmcGxM6tv17FC5BMI9gGPm9l9pAUDd/9sbKUSEYnJ0lXNXHXPBlpa20kZHDl9TNJFSlw+geDO8CEiUtH6ZhD3TR7rdfinX6+nsaG+ZgaGsxkwELj7jWY2DDg0PLQxzPYREakoubaeVCDIwcxOBG4E/goYcIiZXejug80aEhFJRK3PII6ST9fQvwCnuvtGADM7FLgZOCbOgomIFFN3Ty/D6lN0dPf2e61WZhBHyWdCWUNfEABw96cIsohERCrGd+/aQEd3Lw11++8vUEsziKPkc0ew3MyuA/4r/PkjDHJ5CRGRJCxd1cx1f3qGC094HfNmjOfqezbS0trGtHGNXHLa3JoeH4D8AsH/IViF9LMEYwQPAv8eZ6FERIaqb6OZltY2HJg9aRSXnXE4DXWpmm/4M+UTCE4BrnH378ddGBGRYshME4VgQPi3q7cpCGSRzxjB+cAmM7vKzN4Yd4FERIYqW5poe3ftbDRTqAEDgbt/FJgHbAFuMLOHzWyhmR0Qe+lERAZBaaKFyWsZanffDdwG3AJMBd4PrDSzz8RYNhGRgv15y4vBaGYWtZ4mGiWfCWXvAy4CXk+QOXScu28Pl5FeD/xrvEUUEYmWPig8prGB3W1dTD5gOLvauvabM6A00Wj5DBZ/EPhB5kxid99nZhfFUywRkYFlDgrvausiZfCFU+YwoqFeaaJ5MndPugwDampq8uXLtXeNiOzvbVf8geYs/f7TxzXy0KKTEihReTGzFe7eNNB5kXcEZvYKwU5krx4KfzbA3V1rt4pIojQoXBy5Nq9XVpCIlK0tO/aQMqMnS6+GBoULk+uOYIy77zazrFv3uPvO+IolIrK/9EHhSaOHs7eji8ZhKbp6XIPCQ5RrsPi/gTMI1hXq6xLq48DsGMslIvKqzEHhHXs6MOBrp7+RSaOHa1B4iHJ1DZ0R/jurdMUREekv20xhB2546K88tOgkNfxDlKtraH6uX3T3lcUvjohIfxoUjleurqHlwDpgR/hzZteQcrNEJHbuzqjh9ezp6O73mgaFiyNXIPgicC7QRrC0xO3uvqckpRIRIdhVbNGSNezp6KYuZfT0vpYhpEHh4sk1RvAD4AdmNgu4ALjPzJ4FvuPuj5eqgCJSW9Kzg4bXp2jv7uVz75nD6yaM5Hv3PqVB4RgMuMSEuz9jZncAjcDHgEOBIQUCMxsH/Aw4kqCb6SJ3f3go7ykilS8zO6g93Fpy5sRRnD1vOu+ff3DCJaxOkauPmtlsM/uqmT0KfBN4AjjM3f+nCNe9Frjb3Q8D3kyweJ2I1Lhs2UFdPa59BGKW645gM7AauAPYDcwA/tEsGDMe7I5lZjYGeCfw9+H7dAKdg3kvEakuyg5KRq5A8E+8ttbQ6CJeczZBJtINZvZmgglrF7v73iJeQ0QqzCvtXdTXGV09WjKi1HINFl8e4zXnA59x90fN7FpgEfD19JPMbCGwEGDGjBkxFUVEysHejm4+ccNjdPc4w+qMzh5lB5VSrglllwE/cveXI14/CRjp7r8p8Jpbga3u/mj4868IAsF+3H0xsBiCZagLvIaIlLn07KCGuhRdPb386CPz6Qz3FlZ2UOnk6hpaA/zGzNqBlQTdOSOAOcDRwO+B7xR6QXd/wcyeN7O57r4ROBl4suCSi0jFyswO6uwJsoM6u3s5e950Nfwllqtr6A7gDjObA7yNYK/i3cAvgIXuPpTRm88AN5nZMOBp4BNDeC8RqTC5soMUBEovn3kEm4BNxbxoOCFtwF1zRKQ6KTuovETOIxARiUN3Ty/DG7I3PcoOSoYCgYiUTE+v88Vbn6C9KxgTSKfsoOQM2DUkIjIU6dlBjcPq2NfZw5cXzGXa2EZlB5WJAQOBmY0APgkcQZA1BIC7XxRjuUSkCmRmB+3r7KE+ZUwb26jsoDKST9fQfwEHAacBDwAHA6/EWSgRqQ7ZsoO6e7V2ULnJJxC8wd2/Dux19xuB04E3xVssEakGyg6qDPkEgq7w31YzOxIYC8yMrUQiUjWisoCUHVRe8gkEi81sPMFaQHcSzAK+MtZSiUhV+Ojx/dcJU3ZQ+clnQtnPwqcPEKwcKiKSl9VbdzG8zpgwejgv7GpXdlCZyidraCJwOcEyEw78L/Atd38p3qKJSCVb27yLu9a+wGdPnsMXTjk06eJIDvl0Dd0CbCfYyP4DwIvAL+MslIhUvh8se4qxjQ188u2zki6KDCCfQDDB3b/l7s+Ej38GxsVdMBGpXCufe5n7Nmxn4TtnM7axIeniyADyCQT3m9n5ZpYKH+cBv427YCJSub5/71NMHDWMv3/rzKSLInnItTHNKwRjAgZ8gWD5aQiCxx7gG7GXTkQqzsNbXuJPm1/kstPfyKjhWsWmEuTaj+CAUhZERCpbsKbQBppb20kZ6hKqIHmF63AewRz2X2vowbgKJSLlK30Rub50UGC/NYV6Hf7fHetoqEspVbQC5JM++g/AxQRrDD0OHA88DJwUb9FEJEn5NPjNrW185bbVpMz6rSnU1tWjHccqRD53BBcDxwKPuPu7zeww4JvxFktEkpS5amhzaxuXLlnD8IZUvwa/o7s38n20plBlyCcQtLt7u5lhZsPdfYOZaX64SJXI9s0/26qhbV09/Y4NRGsKVYZ8AsFWMxsHLAWWmdnLQEu8xRKRUsj2zf/Lv1pNZ0/0t/xsxjU20NHdu1+g0JpClSOftYbeHz693MzuJ1h99O5YSyUiJZHtm3+uIBDV4F9+5hGvvp92HKs8OQOBmaWA1e5+JIC7P1CSUolISeTqw29sqCu4wVfDX5lyBgJ37zWzJ8xshrs/V6pCiUhpjB/VwM69Xf2OT08bK1CDX/3yGSOYCqwzs78Ae/sOuvuZsZVKRGJ35xMtvLy3CzNwf+14X9++9hSuHfkEAqWKilSB9OygsSMbaN3XxXGzJnDOvOn86x82q2+/huUzWLzfuICZvQ34MMFGNYNmZnXAcqDZ3c8YynuJSG6Z2UGt+7pIGXxg/sGcd+whnH9c/53EpHbks/ooZna0mV1lZn8F/hlYX4RrX1yk9xGRAWTLDup1uPa+TQmVSMpJrtVHDwXOBy4AXiLYjMbc/d1DvaiZHQycDnybYGVTEYlRVHaQZv4K5O4a2kCwLeX73H0zgJl9vkjXvQb4MhC5wqmZLQQWAsyYodtWkXyljwVMHTuCI6aNwSPO1cxfgdxdQ+cCLxBsTPMfZnYywd4EQ2JmZwDb3X1FrvPcfbG7N7l70+TJk4d6WZGa0DcW0NzahgMtu9pZtn47syaOZETD/v+7a+av9IkMBO5+u7t/CDgM+CPweWCKmf3YzE4dwjXfBpwZjjfcApxkZr/I/Ssiko9sYwEAnT3OFeccxfRxjRjBPIHvnvMmZQcJEPT553+y2QTgg8CH3H3Iy1Cb2YnAlwbKGmpqavLly5cP9XIiVW/Wot9m7QYy4JkrTi91cSRhZrbC3ZsGOq+gfeTcfSfw0/AhIgnKXDX01CMOjDxXYwGSS6Ibirr7Hwm6nUSkANlWDb3hoWeZMLKBvZ09++0RoLEAGUhe8whEpLxEjQWMaKjjynM1FiCFSfSOQEQGJyr/f9uudq0RJAXTHYFIhXF3xjRm/w6nsQAZDN0RiJS5zAliMyaMZFdbNykLlonoo7EAGSwFApEyljko3LKrnZZd7Zx2+IEsOGIq31v2lFYNlSFTIBApY1GDwmtbXuGnHz+W9x9zcAKlkmqjMQKRMqbF4qQUdEcgUib2GwsYN4ITZk+MPFeDwlJMCgQiZaDfWEBrO7etbGbKAcNobevWBDGJlbqGRMpA1FhAfV1KE8QkdrojECmxzDWCPv3u19McORagCWISPwUCkRLKtkbQV29fG3m+xgKkFNQ1JFJCUV1ABwyvo7Ghbr9jGguQUlEgECmhqLTPPR09fPecN2ksQBKhriGRmGSOBSw4YgpmkG0vqGnjGjUWIIlRIBCJQbaxgOse+ivjGutp6+pVOqiUFXUNicQgaixg5LB6pYNK2dEdgUgMtF+AVBLdEYjE4KCxI7IeVzqolCMFApEic3emHDC833GNBUi5UiAQKbIf3reZx7fu4syjpmosQCqCxghEhig9TXT8qAZ27u3inHnT+Zfz3oyZJV08kQEpEIgMQWaa6M69XZjBCa+fqCAgFUNdQyJDkC1N1B2u+f2mhEokUriSBwIzO8TM7jez9Wa2zswuLnUZRIpFO4hJNUjijqAb+KK7vxE4Hvi0mR2eQDlEhmzS6P7ZQaA0UaksJQ8E7r7N3VeGz18B1gNKpZCKc8+6F9i5t4PMkQCliUqlSXSw2MxmAvOAR7O8thBYCDBjxoySlkskm/TsoDGN9exq6+boQ8bxgWOm8+M/Pv3q4nKXnDZXaaJSUcyzLYVYigubjQYeAL7t7ktyndvU1OTLly8vTcFEssjMDgJIGVxxzlGcd+whCZZMJJqZrXD3poHOSyRryMwagNuAmwYKAiLlIFt2UK/DtfcpO0gqX8m7hixIrr4OWO/u3y/19UUGkrmPwD+emGtPYWUHSeVL4o7gbcDHgJPM7PHw8d4EyiHST18XUHNrG06wj8DXlmpPYaluJb8jcPc/Qb9EC5GykGtP4e5e9ntN2UFSLTSzWCSN9hSWWqS1hqRmpY8FTB03guNnTYg8V3sKSzVTIJCalJkO2tLazpJVLRw0Zjgv7+vSnsJSUxQIpOplZgFdctpcrrhrfdaxgLqUceW5R/U7X3cCUs0Sm1BWCE0ok8GKmgjWG/Fnb8AzV5xemsKJxCzfCWW6I5Cqkf2b/4asE8EMyBYLlA4qtUiBQCpSZqP/7sMmc9uK5lcb/ebWNr7wP49HfvN3gr5/pYOKKH1UKlC2SV+/eOS5yG/+2fSlfyodVER3BFLmsnX3RE36yibXN3+lg4oEFAikLGRr8IH9BnqbW9v40q1P0B3V35PF9LTgoSwgkewUCKSk8m3wFy1ZTUMq1e+bf64gkDkArG/+IvlRIJBYFNLgD6vr3+C3d/XSTm+/9+2Trbvn3GOmc/+GHfrmL1IgBQLJS7aG/ex50/Nu8L9yW44Gvyu6wc9G3T0ixaUJZbKffBp2CL6BnzN/GretbN6vIa9PGXUp22+JhsEa19hAR3dvv+squ0ckP/lOKFMgqFH5NvjD61M01Bl7OvLL0hmMXA0+oG/+IoOkQCBAYQ1+fZ2xVw2+SNVQIKgx+Tb4IxpS1KdS7OnoHvI168zoyfL3owZfpDwoENSQbAurNTakaKhLsbt96A1+VMN+7jHT91vWoe+4GnyR8qBF56pUvjNt27p6aSswGyeqwb/8zCOA7A170+smRDb4avhFKoPuCMpUvl09Ud0zuajrRqQ2qGuoQhQymJsyy7rGTtSSymrwRWqbAkGZKSQ/f3h9ita2roLeP9tMWzX4IrVNgaBAhcycLfQ4ZG/wRzSkeHlfYQ1+NpppKyLZ1HwgKEZDHZUVU8jxEfUpGupTvBJj9o5m2opINmUdCMxsAXAtUAf8zN2vyHV+oYEgezplHWfPm8btK5tpT1v+YFhdiob67BOpovreo44Xi/r2RaQYyjZ91MzqgB8BpwBbgcfM7E53f7JY18ieTtnDzX95vt+5nT29dEZMpo1q7IsVBAaTrglKyxSR4kpiHsFxwGZ3fxrAzG4BzgKKFghaWtuK8j51Bj1ZWv2olM1CZ9qqwReRcpBEIJgOpH813wq8JfMkM1sILASYMWNGQReYNq6R5izBoNCGuhhjBGrwRaTcJREIsu0n3q91dvfFwGIIxggKucAlp80taPB3MDNnCz0OavBFpDyVfLDYzE4ALnf308KfLwVw9+9G/U7cWUNqoEWkGpVt1pCZ1QNPAScDzcBjwIfdfV3U71TDhDIRkVIr26whd+82s/8L3EOQPnp9riAgIiLxSmT1UXf/HfC7JK4tIiL7SyVdABERSZYCgYhIjVMgEBGpcRWx6JyZ7QCeTbocESYBLyZdiBKqpfrWUl1B9a1Gr3P3yQOdVBGBoJyZ2fJ80rOqRS3Vt5bqCqpvLVPXkIhIjVMgEBGpcQoEQ7c46QKUWC3Vt5bqCqpvzdIYgYhIjdMdgYhIjVMgyGBm15vZdjNbm3bszWb2sJmtMbNfm9mY8PhHzOzxtEevmR0dvnZMeP5mM/uhmWVbfjtxBda3wcxuDI+v71s5NnxtgZltDOu7KIm65KPA+g4zsxvC40+Y2Ylpv1P2n6+ZHWJm94ef1Tozuzg8PsHMlpnZpvDf8eFxC+uy2cxWm9n8tPe6MDx/k5ldmFSdchlEfQ8LP/cOM/tSxntVxN9z0bi7HmkP4J3AfGBt2rHHgHeFzy8CvpXl994EPJ3281+AEwj2X7gL+Luk6zbU+gIfBm4Jn48E/grMJFg8cAswGxgGPAEcnnTdilDfTwM3hM8PBFYAqUr5fIGpwPzw+QEEq/4eDlwFLAqPLwKuDJ+/N6yLAccDj4bHJwBPh/+OD5+PT7p+RajvgcCxwLeBL6W9T8X8PRfroTuCDO7+ILAz4/Bc4MHw+TLg3Cy/egFwM4CZTQXGuPvDHvxl/Rw4O54SD02B9XVgVLiUeCPQCewmbftRd+8E+rYfLTsF1vdw4L7w97YDrUBTpXy+7r7N3VeGz18B1hPsEHgWcGN42o28VvazgJ974BFgXFjX04Bl7r7T3V8m+G+0oIRVyUuh9XX37e7+GNCV8VYV8/dcLAoE+VkLnBk+/yBwSJZzPkQYCAj++LamvbY1PFYpour7K2AvsA14Dvieu+8k+/aj1VDfJ4CzzKzezGYBx4SvVdzna2YzgXnAo8AUd98GQeNJ8M0Yoj/Hivt886xvlIqr71ApEOTnIuDTZraC4JazM/1FM3sLsM/d+/qd89qOs4xF1fc4oAeYBswCvmhms6ne+l5P0AgsB64B/gx0U2H1NbPRwG3A59x9d65TsxzzHMfLUgH1jXyLLMfKtr7FkMh+BJXG3TcApwKY2aHA6RmnnM9rdwMQNB4Hp/18MNASZxmLKUd9Pwzc7e5dwHYzewhoIvj2lH6XVBX1dfdu4PN955nZn4FNwMtUyOdrZg0EjeJN7r4kPPw3M5vq7tvCrp/t4fGtZP8ctwInZhz/Y5zlHqwC6xsl6r9D1dIdQR7M7MDw3xRwGfCTtNdSBN0Jt/QdC28/XzGz48Nsko8Dd5S00EOQo77PASeF2SWjCAYUNxAMts4xs1lmNowgMN5Z+pIPTlR9zWxkWE/M7BSg292frJTPNyzbdcB6d/9+2kt3An2ZPxfyWtnvBD4efr7HA7vCut4DnGpm48OMm1PDY2VlEPWNUtF/z4OS9Gh1uT0IvtlvIxhA2gp8EriYIAPhKeAKwol44fknAo9keZ8mgr7nLcC/pf9OOT0KqS8wGrgVWAc8CVyS9j7vDc/fAnwt6XoVqb4zgY0Eg46/J1jJsWI+X+DtBF0aq4HHw8d7gYkEg+Cbwn8nhOcb8KOwTmuAprT3ugjYHD4+kXTdilTfg8K/gd0EiQBbCZIAKubvuVgPzSwWEalx6hoSEalxCgQiIjVOgUBEpMYpEIiI1DgFAhGRGqdAIJKHMLf+T2b2d2nHzjOzu8OJZpjZTEtb1VSkUmhmsUge3N3N7FPArWZ2P8EKld8GFrj7lmRLJzI0CgQieXL3tWb2a+ArwCiClTq3mNkedx+dcPFEBk2BQKQw3wRWEixM15RwWUSKQoFApADuvtfMfgnscfeOpMsjUgwaLBYpXG/4EKkKCgQiIjVOgUBEpMZp9VERkRqnOwIRkRqnQCAiUuMUCEREapwCgYhIjVMgEBGpcQoEIiI1ToFARKTGKRCIiNS4/w/kXjk5tvUiwwAAAABJRU5ErkJggg==\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1154155c0>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "BaseYear = 1995\n", "x = np.matrix(df_arac.Year[0:]).T-BaseYear\n", "y = np.matrix(df_arac.Car[0:]).T/1000000.\n", "\n", "plt.plot(x+BaseYear, y, 'o-')\n", "plt.xlabel('Yil')\n", "plt.ylabel('Araba (Milyon)')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x113f13208>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from __future__ import print_function\n", "from ipywidgets import interact, interactive, fixed\n", "import ipywidgets as widgets\n", "import matplotlib.pylab as plt\n", "from IPython.display import clear_output, display, HTML\n", "\n", "\n", "w_0 = 0.27150786\n", "w_1 = 0.37332256\n", "\n", "BaseYear = 1995\n", "x = np.matrix(df_arac.Year[0:]).T-BaseYear\n", "y = np.matrix(df_arac.Car[0:]).T/1000000.\n", "\n", "fig, ax = plt.subplots()\n", "\n", "f = w_1*x + w_0\n", "plt.plot(x+BaseYear, y, 'o-')\n", "ln, = plt.plot(x+BaseYear, f, 'r')\n", "\n", "\n", "plt.xlabel('Years')\n", "plt.ylabel('Number of Cars (Millions)')\n", "ax.set_ylim((-2,13))\n", "plt.close(fig)\n", "\n", "def set_line(w_1, w_0):\n", "\n", " f = w_1*x + w_0\n", " e = y - f\n", "\n", " ln.set_ydata(f)\n", " ax.set_title('Total Error = {} '.format(np.asscalar(e.T*e/2)))\n", " display(fig)\n", "\n", "set_line(0.32,3)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "a747a0cc0bda4efba6c3122cf4db1cae", "version_major": 2, "version_minor": 0 }, "text/html": [ "<p>Failed to display Jupyter Widget of type <code>interactive</code>.</p>\n", "<p>\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n", " Widgets Documentation</a> for setup instructions.\n", "</p>\n", "<p>\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n", " it may mean that your frontend doesn't currently support widgets.\n", "</p>\n" ], "text/plain": [ "interactive(children=(FloatSlider(value=0.0, description='w_1', max=2.0, min=-2.0, step=0.01), FloatSlider(value=0.0, description='w_0', max=5.0, min=-5.0, step=0.01), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "interact(set_line, w_1=(-2, 2, 0.01), w_0=(-5, 5, 0.01));" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x115f05be0>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "w_0 = 0.27150786\n", "w_1 = 0.37332256\n", "w_2 = 0.1\n", "\n", "BaseYear = 1995\n", "x = np.array(df_arac.Year[0:]).T-BaseYear\n", "y = np.array(df_arac.Car[0:]).T/1000000.\n", "\n", "fig, ax = plt.subplots()\n", "\n", "f = w_2*x**2 + w_1*x + w_0\n", "plt.plot(x+BaseYear, y, 'o-')\n", "ln, = plt.plot(x+BaseYear, f, 'r')\n", "\n", "\n", "plt.xlabel('Yıl')\n", "plt.ylabel('Araba Sayısı (Milyon)')\n", "ax.set_ylim((-2,13))\n", "plt.close(fig)\n", "\n", "def set_line(w_2, w_1, w_0):\n", " f = w_2*x**2 + w_1*x + w_0\n", " e = y - f\n", " ln.set_ydata(f)\n", " ax.set_title('Ortalama Kare Hata = {} '.format(np.sum(e*e/len(e))))\n", " display(fig)\n", "\n", "set_line(w_2, w_1, w_0)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": false }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d62dbd1a716149dbade40312ee909d41", "version_major": 2, "version_minor": 0 }, "text/html": [ "<p>Failed to display Jupyter Widget of type <code>interactive</code>.</p>\n", "<p>\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n", " Widgets Documentation</a> for setup instructions.\n", "</p>\n", "<p>\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n", " it may mean that your frontend doesn't currently support widgets.\n", "</p>\n" ], "text/plain": [ "interactive(children=(FloatSlider(value=0.0, description='w_2', max=0.1, min=-0.1, step=0.001), FloatSlider(value=0.0, description='w_1', max=2.0, min=-2.0, step=0.01), FloatSlider(value=0.0, description='w_0', max=5.0, min=-5.0, step=0.01), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "<function __main__.set_line>" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "interact(set_line, w_2=(-0.1,0.1,0.001), w_1=(-2, 2, 0.01), w_0=(-5, 5, 0.01))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Örnek 1, devam: Modeli Öğrenmek\n", "\n", "* Öğrenmek: parametre kestirimi $w = [w_0, w_1]$\n", "\n", "* Genelde model veriyi hatasız açıklayamayacağı için her veri noktası için bir hata tanımlıyoruz:\n", "\n", "$$e_i = y_i - f(x_i; w)$$\n", "\n", "* Toplam kare hata \n", "\n", "$$\n", "E(w) = \\frac{1}{2} \\sum_i (y_i - f(x_i; w))^2 = \\frac{1}{2} \\sum_i e_i^2\n", "$$\n", "\n", "* Toplam kare hatayı $w_0$ ve $w_1$ parametrelerini değiştirerek azaltmaya çalışabiliriz.\n", "\n", "* Hata yüzeyi " ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x113d41a20>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from itertools import product\n", "\n", "BaseYear = 1995\n", "x = np.matrix(df_arac.Year[0:]).T-BaseYear\n", "y = np.matrix(df_arac.Car[0:]).T/1000000.\n", "\n", "# Setup the vandermonde matrix\n", "N = len(x)\n", "A = np.hstack((np.ones((N,1)), x))\n", "\n", "left = -5\n", "right = 15\n", "bottom = -4\n", "top = 6\n", "step = 0.05\n", "W0 = np.arange(left,right, step)\n", "W1 = np.arange(bottom,top, step)\n", "\n", "ErrSurf = np.zeros((len(W1),len(W0)))\n", "\n", "for i,j in product(range(len(W1)), range(len(W0))):\n", " e = y - A*np.matrix([W0[j], W1[i]]).T\n", " ErrSurf[i,j] = e.T*e/2\n", "\n", "plt.figure(figsize=(7,7))\n", "plt.imshow(ErrSurf, interpolation='nearest', \n", " vmin=0, vmax=1000,origin='lower',\n", " extent=(left,right,bottom,top),cmap='Blues_r')\n", "plt.xlabel('w0')\n", "plt.ylabel('w1')\n", "plt.title('Error Surface')\n", "plt.colorbar(orientation='horizontal')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Modeli Nasıl Kestirebiliriz?\n", "\n", "## Fikir: En küçük kare hata \n", "(Gauss 1795, Legendre 1805)\n", "\n", "* Toplam hatanın $w_0$ ve $w_1$'e göre türevini hesapla, sıfıra eşitle ve çıkan denklemleri çöz\n", "\n", "\n", "\n", "\\begin{eqnarray}\n", "\\left(\n", "\\begin{array}{c}\n", "y_0 \\\\ y_1 \\\\ \\vdots \\\\ y_{N-1} \n", "\\end{array}\n", "\\right)\n", "\\approx\n", "\\left(\n", "\\begin{array}{cc}\n", "1 & x_0 \\\\ 1 & x_1 \\\\ \\vdots \\\\ 1 & x_{N-1} \n", "\\end{array}\n", "\\right) \n", "\\left(\n", "\\begin{array}{c}\n", " w_0 \\\\ w_1 \n", "\\end{array}\n", "\\right)\n", "\\end{eqnarray}\n", "\n", "\\begin{eqnarray}\n", "y \\approx A w\n", "\\end{eqnarray}\n", "\n", "> $A = A(x)$: Model Matrisi\n", "\n", "> $w$: Model Parametreleri\n", "\n", "> $y$: Gözlemler\n", "\n", "* Hata vektörü: $$e = y - Aw$$\n", "\n", "\\begin{eqnarray}\n", "E(w) & = & \\frac{1}{2}e^\\top e = \\frac{1}{2}(y - Aw)^\\top (y - Aw)\\\\\n", "& = & \\frac{1}{2}y^\\top y - \\frac{1}{2} y^\\top Aw - \\frac{1}{2} w^\\top A^\\top y + \\frac{1}{2} w^\\top A^\\top Aw \\\\\n", "& = & \\frac{1}{2} y^\\top y - y^\\top Aw + \\frac{1}{2} w^\\top A^\\top Aw \\\\\n", "\\end{eqnarray}\n", "\n", "### Gradyan\n", "https://tr.khanacademy.org/math/multivariable-calculus/multivariable-derivatives/partial-derivative-and-gradient-articles/a/the-gradient\n", "\n", "\\begin{eqnarray}\n", "\\frac{d E}{d w } & = & \\left(\\begin{array}{c}\n", " \\partial E/\\partial w_0 \\\\ \\partial E/\\partial w_1 \\\\ \\vdots \\\\ \\partial E/\\partial w_{K-1}\n", "\\end{array}\\right)\n", "\\end{eqnarray}\n", " \n", "Toplam hatanın gradyanı\n", "\\begin{eqnarray}\n", "\\frac{d}{d w }E(w) & = & \\frac{d}{d w }(\\frac{1}{2} y^\\top y) &+ \\frac{d}{d w }(- y^\\top Aw) &+ \\frac{d}{d w }(\\frac{1}{2} w^\\top A^\\top Aw) \\\\\n", "& = & 0 &- A^\\top y &+ A^\\top A w \\\\\n", "& = & - A^\\top (y - Aw) \\\\\n", "& = & - A^\\top e \\\\\n", "& \\equiv & \\nabla E(w)\n", "\\end{eqnarray}\n", "\n", "### Yapay zekaya gönül veren herkesin bilmesi gereken eşitlikler\n", "* Vektör iç çarpımının gradyeni\n", "\\begin{eqnarray}\n", "\\frac{d}{d w }(h^\\top w) & = & h\n", "\\end{eqnarray}\n", "\n", "* Karesel bir ifadenin gradyeni\n", "\\begin{eqnarray}\n", "\\frac{d}{d w }(w^\\top K w) & = & (K+K^\\top) w\n", "\\end{eqnarray}\n", "\n", "\n", "### En küçük kare hata çözümü doğrusal modellerde doğrusal denklemlerin çözümü ile bulunabiliyor\n", "\n", "\n", "\\begin{eqnarray}\n", "w^* & = & \\arg\\min_{w} E(w)\n", "\\end{eqnarray}\n", "\n", "* Eniyileme Şartı (gradyan sıfır olmalı )\n", "\n", "\\begin{eqnarray}\n", "\\nabla E(w^*) & = & 0\n", "\\end{eqnarray}\n", "\n", "\\begin{eqnarray}\n", "0 & = & - A^\\top y + A^\\top A w^* \\\\\n", "A^\\top y & = & A^\\top A w^* \\\\\n", "w^* & = & (A^\\top A)^{-1} A^\\top y \n", "\\end{eqnarray}\n", "\n", "* Geometrik (Projeksyon) yorumu:\n", "\n", "\\begin{eqnarray}\n", "f & = A w^* = A (A^\\top A)^{-1} A^\\top y \n", "\\end{eqnarray}\n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parametreler: \n", "w0 = [[4.13258253]] \n", "w1 = [[0.20987778]]\n", "Toplam Kare Hata: [[37.19722385]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:9: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n", "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n", " if __name__ == '__main__':\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x113d41c50>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solving the Normal Equations\n", "\n", "# Setup the Design matrix\n", "N = len(x)\n", "A = np.hstack((np.ones((N,1)), x))\n", "\n", "#plt.imshow(A, interpolation='nearest')\n", "# Solve the least squares problem\n", "w_ls,E,rank,sigma = np.linalg.lstsq(A, y)\n", "\n", "print('Parametreler: \\nw0 = ', w_ls[0],'\\nw1 = ', w_ls[1] )\n", "print('Toplam Kare Hata:', E/2)\n", "\n", "f = np.asscalar(w_ls[1])*x + np.asscalar(w_ls[0])\n", "plt.plot(x+BaseYear, y, 'o-')\n", "plt.plot(x+BaseYear, f, 'r')\n", "\n", "\n", "plt.xlabel('Yıl')\n", "plt.ylabel('Araba sayısı (Milyon)')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polinomlar \n", "\n", "\n", "### Parabol\n", "\\begin{eqnarray}\n", "\\left(\n", "\\begin{array}{c}\n", "y_0 \\\\ y_1 \\\\ \\vdots \\\\ y_{N-1} \n", "\\end{array}\n", "\\right)\n", "\\approx\n", "\\left(\n", "\\begin{array}{ccc}\n", "1 & x_0 & x_0^2 \\\\ 1 & x_1 & x_1^2 \\\\ \\vdots \\\\ 1 & x_{N-1} & x_{N-1}^2 \n", "\\end{array}\n", "\\right) \n", "\\left(\n", "\\begin{array}{c}\n", " w_0 \\\\ w_1 \\\\ w_2\n", "\\end{array}\n", "\\right)\n", "\\end{eqnarray}\n", "\n", "### $K$ derecesinde polinom\n", "\\begin{eqnarray}\n", "\\left(\n", "\\begin{array}{c}\n", "y_0 \\\\ y_1 \\\\ \\vdots \\\\ y_{N-1} \n", "\\end{array}\n", "\\right)\n", "\\approx\n", "\\left(\n", "\\begin{array}{ccccc}\n", "1 & x_0 & x_0^2 & \\dots & x_0^K \\\\ 1 & x_1 & x_1^2 & \\dots & x_1^K\\\\ \\vdots \\\\ 1 & x_{N-1} & x_{N-1}^2 & \\dots & x_{N-1}^K \n", "\\end{array}\n", "\\right) \n", "\\left(\n", "\\begin{array}{c}\n", " w_0 \\\\ w_1 \\\\ w_2 \\\\ \\vdots \\\\ w_K\n", "\\end{array}\n", "\\right)\n", "\\end{eqnarray}\n", "\n", "\n", "\\begin{eqnarray}\n", "y \\approx A w\n", "\\end{eqnarray}\n", "\n", "> $A = A(x)$: Model matrisi \n", "\n", "> $w$: Model Parametreleri\n", "\n", "> $y$: Gözlemler\n", "\n", "Polinom oturtmada ortaya çıkan özel yapılı matrislere __Vandermonde__ matrisleri de denmektedir." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:18: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n", "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x11576a668>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])\n", "N = len(x)\n", "x = x.reshape((N,1))\n", "y = np.array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]).reshape((N,1))\n", "#y = np.array([9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]).reshape((N,1))\n", "#y = np.array([7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]).reshape((N,1))\n", "\n", "def fit_and_plot_poly(degree):\n", "\n", " #A = np.hstack((np.power(x,0), np.power(x,1), np.power(x,2)))\n", " A = np.hstack((np.power(x,i) for i in range(degree+1)))\n", " # Setup the vandermonde matrix\n", " xx = np.matrix(np.linspace(np.asscalar(min(x))-1,np.asscalar(max(x))+1,300)).T\n", " A2 = np.hstack((np.power(xx,i) for i in range(degree+1)))\n", "\n", " #plt.imshow(A, interpolation='nearest')\n", " # Solve the least squares problem\n", " w_ls,E,rank,sigma = np.linalg.lstsq(A, y)\n", " f = A2*w_ls\n", " plt.plot(x, y, 'o')\n", " plt.plot(xx, f, 'r')\n", "\n", " plt.xlabel('x')\n", " plt.ylabel('y')\n", "\n", " plt.gca().set_ylim((0,20))\n", " #plt.gca().set_xlim((1950,2025))\n", " \n", " if E:\n", " plt.title('Mertebe = '+str(degree)+' Hata='+str(E[0]))\n", " else:\n", " plt.title('Mertebe = '+str(degree)+' Hata= 0')\n", " \n", " plt.show()\n", "\n", "fit_and_plot_poly(0)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "10848f0118f341e78ccdb349557d3eb5", "version_major": 2, "version_minor": 0 }, "text/html": [ "<p>Failed to display Jupyter Widget of type <code>interactive</code>.</p>\n", "<p>\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n", " Widgets Documentation</a> for setup instructions.\n", "</p>\n", "<p>\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n", " it may mean that your frontend doesn't currently support widgets.\n", "</p>\n" ], "text/plain": [ "interactive(children=(IntSlider(value=5, description='degree', max=10), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "<function __main__.fit_and_plot_poly>" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "interact(fit_and_plot_poly, degree=(0,10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Overfit: Aşırı uyum" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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": { "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "toc_cell": false, "toc_position": {}, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }