Skip to content

Instantly share code, notes, and snippets.

@rakuishi
Last active February 3, 2022 02:14
Show Gist options
  • Save rakuishi/29ae518ea83d51f039cfebebcc54a03a to your computer and use it in GitHub Desktop.
Save rakuishi/29ae518ea83d51f039cfebebcc54a03a to your computer and use it in GitHub Desktop.
【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 -
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([1, 2, 3]), array([ 2. , 3.9, 6.1]))"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"x = np.array([1, 2, 3])\n",
"y = np.array([2, 3.9, 6.1])\n",
"x, y"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([-1., 0., 1.]), array([-2. , -0.1, 2.1]))"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# データの中心化\n",
"xc = x - x.mean()\n",
"yc = y - y.mean()\n",
"xc, yc"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{equation*}\n",
"a = \\frac{ \\sum_{n=1}^N x_n y_n}{ \\sum_{n=1}^N x_n^2 }\n",
"\\end{equation*}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([ 2. , -0. , 2.1]), array([ 1., 0., 1.]))"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xy = xc * yc\n",
"xx = xc * xc\n",
"xy, xx"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.0499999999999998"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = xy.sum() / xx.sum()\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>40.362</td>\n",
" <td>137500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>40.686</td>\n",
" <td>132500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>38.430</td>\n",
" <td>93000.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"0 40.362 137500.0\n",
"1 40.686 132500.0\n",
"2 38.430 93000.0"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('sample.csv')\n",
"df.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"x = df['x']\n",
"y = df['y']"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x110a6bba8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 横軸を x, 縦軸を y の散布図(scatter)をプロット\n",
"plt.scatter(x, y)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# 単回帰分析の実装"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>100.000000</td>\n",
" <td>100.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>37.622220</td>\n",
" <td>121065.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>4.087547</td>\n",
" <td>47174.009226</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>29.418000</td>\n",
" <td>59000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>35.151000</td>\n",
" <td>90375.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>36.909000</td>\n",
" <td>104250.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>39.439500</td>\n",
" <td>147250.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>50.250000</td>\n",
" <td>250000.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"count 100.000000 100.000000\n",
"mean 37.622220 121065.000000\n",
"std 4.087547 47174.009226\n",
"min 29.418000 59000.000000\n",
"25% 35.151000 90375.000000\n",
"50% 36.909000 104250.000000\n",
"75% 39.439500 147250.000000\n",
"max 50.250000 250000.000000"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"x 37.62222\n",
"y 121065.00000\n",
"dtype: float64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2.73978</td>\n",
" <td>16435.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3.06378</td>\n",
" <td>11435.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.80778</td>\n",
" <td>-28065.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"0 2.73978 16435.0\n",
"1 3.06378 11435.0\n",
"2 0.80778 -28065.0"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_c = df - df.mean()\n",
"df_c.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1.000000e+02</td>\n",
" <td>100.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1.989520e-15</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>4.087547e+00</td>\n",
" <td>47174.009226</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-8.204220e+00</td>\n",
" <td>-62065.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-2.471220e+00</td>\n",
" <td>-30690.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-7.132200e-01</td>\n",
" <td>-16815.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>1.817280e+00</td>\n",
" <td>26185.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>1.262778e+01</td>\n",
" <td>128935.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"count 1.000000e+02 100.000000\n",
"mean 1.989520e-15 0.000000\n",
"std 4.087547e+00 47174.009226\n",
"min -8.204220e+00 -62065.000000\n",
"25% -2.471220e+00 -30690.000000\n",
"50% -7.132200e-01 -16815.000000\n",
"75% 1.817280e+00 26185.000000\n",
"max 1.262778e+01 128935.000000"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_c.describe()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# データ抽出\n",
"x = df_c['x']\n",
"y = df_c['y']"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x118f5b400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 散布図\n",
"plt.scatter(x, y)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10069.022519284064"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = (x * y).sum() / (x * x).sum()\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x119277358>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(x, y, label='y')\n",
"plt.plot(x, a * x, label='y_hat', color='red')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# 予測値の計算"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"x 37.62222\n",
"y 121065.00000\n",
"dtype: float64"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_new = 40\n",
"mean = df.mean()\n",
"mean"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"23941.920365903276"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xc = x_new - mean['x']\n",
"yc = a * xc\n",
"yc"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"145006.92036590326"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 元のスケールの予測値\n",
"y_hat = a * xc + mean['y']\n",
"y_hat"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# 予測値を計算する関数の作成\n",
"def predict(x):\n",
" # 定数項\n",
" a = 10069.022519284064\n",
" xm = 37.62222\n",
" ym = 121065.00000\n",
" # 中心化\n",
" xc = x - xm\n",
" # 予測値の計算\n",
" y_hat = a * xc + ym\n",
" return y_hat"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"145006.92036590326"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict(40)"
]
}
],
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
x y
40.362 137500.0
40.68600000000001 132500.0
38.43 93000.0
36.822 96500.0
37.002 100500.0
35.106 97500.0
35.016000000000005 97500.0
36.762 102000.0
38.844 99000.0
37.374 97000.0
37.17 108500.0
40.29 114000.0
35.477999999999994 94000.0
36.55200000000001 93500.0
37.524 92500.0
35.568 91500.0
37.056 106000.0
36.126 96000.0
35.232000000000006 102000.0
34.385999999999996 96500.0
35.22 110000.0
36.024 101500.0
35.766000000000005 102500.0
35.135999999999996 86500.0
35.274 94000.0
35.916000000000004 107000.0
33.678 78500.0
34.158 81000.0
38.586 90000.0
33.822 71500.0
38.748 96000.0
37.956 98000.0
38.232000000000006 115000.0
34.932 92000.0
34.542 78000.0
38.01 90500.0
35.652 87000.0
38.724 85500.0
35.142 66500.0
36.906 89000.0
37.044 70000.0
30.114 72000.0
32.418 67000.0
32.808 78000.0
29.418000000000003 59000.0
36.78 69000.0
33.767999999999994 78000.0
29.556 73000.0
31.116 89000.0
33.582 77000.0
36.732000000000006 107500.0
32.424 98000.0
30.071999999999996 76500.0
34.254 97000.0
36.774 85000.0
36.912 78000.0
31.632 65500.0
41.658 206500.0
36.396 121500.0
39.06 116500.0
37.5 135000.0
44.934 250000.0
46.812000000000005 250000.0
50.25 250000.0
35.124 113500.0
36.606 125000.0
47.574 250000.0
35.262 119000.0
37.914 119000.0
38.412 111500.0
35.25 87000.0
35.28 95500.0
33.432 115500.0
38.496 118000.0
35.153999999999996 113000.0
39.276 147000.0
36.12 116000.0
37.89 123000.0
41.160000000000004 149500.0
41.88 186000.0
46.589999999999996 199000.0
36.864000000000004 181000.0
42.93 189500.0
39.378 162500.0
33.624 132000.0
36.918 148000.0
46.986000000000004 250000.0
40.692 160000.0
39.336 149000.0
43.11 174500.0
41.706 185000.0
40.434 152500.0
43.068 182000.0
40.8 155500.0
39.624 145500.0
47.25 250000.0
43.72200000000001 166500.0
42.642 151500.0
43.644 173000.0
41.849999999999994 174500.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment