{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# 機械学習\n",
"\n",
"機械学習は与えられたデータをよく表現できるようにモデルのパラメーターを調整し「学習」を行います。学習したモデルを用いることで、新たなデータに対する予測を行うことができます。\n",
"\n",
"## 機械学習の種類\n",
"機械学習は次の3つに大別できます。このNotebookではこのうち教師あり学習と教師なし学習を扱います。\n",
"1. 教師あり学習 (Supervised learning)\n",
" - データの特徴(特徴量)に対して正解データ(正しい答え、ラベル、Ground Truth)がある場合は教師あり学習と呼ばれます。正解データを教師としてデータからラベルを予測できるように学習します。\n",
" - 分類 ラベルが離散値 (例:犬か猫かを予測する)\n",
" - 回帰 ラベルが連続値 (例:明日の株価を予測する)\n",
" \n",
" \n",
"2. 教師なし学習 (Unsupervised learning)\n",
" - ラベルがないデータのみからデータの構造や特徴・パターンなどをよく表すようなモデルをつくります。\n",
" - クラスタリング\n",
" - PCAなどの次元圧縮\n",
" \n",
"3. 強化学習 (Reinforcement learning)\n",
" - ラベルはないですが報酬が与えられます。報酬を最大化するように学習する。\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## 機械学習のデータ\n",
"\n",
"- 学習データ(訓練データ、training data)\n",
"- 検証データ(テストデータ、testing data/validation data)\n",
"\n",
"機械学習とは、データセットの特徴を学習し、別のデータセットに対してそれらの特徴をテストします。機械学習の一般的な方法は、データセットを2つに分割してアルゴリズムを評価することです。これらのセットのうちの1つを学習データ(training data)と呼び、そこから特徴を学習し、もう1つのセットを検証データ(testing data)と呼び、その上で学習した特徴をテストします。\n",
"\n",
"\n",
"ここではPythonの`scikit-learn`を用いて機械学習を動かしてみます。"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## 教師あり学習"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### 分類問題"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"まず、サンプルデータセットをダウンロードします。\n",
"3種類の花(iris)のがくへんの長さや・幅、花弁の長さや・幅が特徴量として与えられているデータです。\n",
"これらの特徴から、3種類のうちどの種類の花なのかを学習・予測します。\n",
"\n",
"データで\n",
"- 0: `setosa`\n",
"- 1: `versicolor`\n",
"- 2: `virginica`\n",
"\n",
"を示します。\n",
"\n",
"**iris (あやめ)** \n",
"非常に有名なテストデータの一つ「iris」は、\n",
"アヤメの花弁の長さ・幅、ガクの長さ・幅のデータです。\n",
"※アヤメのガクは、黄色い筋が入っていて外に垂れ下がっている部分です。\n",
"\n",
"種類(3種類) \n",
"* setosa(セトサ)種\n",
"* versicolor(バージカラー)種、\n",
"* virginica(バージニカ)種\n",
"\n",
"列名 \n",
"* Id (ID)\n",
"* SepalLengthCm (がく片の長さ[cm])\n",
"* SepalWidthCm (がく片幅[cm])\n",
"* PetalLengthCm (花びらの長さ[cm])\n",
"* PetalWidthCm (花びらの幅[cm])\n",
"* Species (種)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import datasets\n",
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn.linear_model import LogisticRegression, LinearRegression\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import accuracy_score, confusion_matrix, classification_report, mean_squared_error\n",
"from sklearn import svm\n",
"from matplotlib import pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" sepal length (cm) | \n",
" sepal width (cm) | \n",
" petal length (cm) | \n",
" petal width (cm) | \n",
" species | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 5.1 | \n",
" 3.5 | \n",
" 1.4 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 4.9 | \n",
" 3.0 | \n",
" 1.4 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 4.7 | \n",
" 3.2 | \n",
" 1.3 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.6 | \n",
" 3.1 | \n",
" 1.5 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.0 | \n",
" 3.6 | \n",
" 1.4 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n",
"0 5.1 3.5 1.4 0.2 \n",
"1 4.9 3.0 1.4 0.2 \n",
"2 4.7 3.2 1.3 0.2 \n",
"3 4.6 3.1 1.5 0.2 \n",
"4 5.0 3.6 1.4 0.2 \n",
"\n",
" species \n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = datasets.load_iris()\n",
"df = pd.DataFrame(data.data, columns=data.feature_names).reset_index(drop=True)\n",
"target = pd.DataFrame(data.target, columns = ['species']).reset_index(drop=True)\n",
"df = df.merge(target, left_index=True, right_index=True, )\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" sepal length (cm) | \n",
" sepal width (cm) | \n",
" petal length (cm) | \n",
" petal width (cm) | \n",
" species | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 150.000000 | \n",
" 150.000000 | \n",
" 150.000000 | \n",
" 150.000000 | \n",
" 150.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 5.843333 | \n",
" 3.057333 | \n",
" 3.758000 | \n",
" 1.199333 | \n",
" 1.000000 | \n",
"
\n",
" \n",
" std | \n",
" 0.828066 | \n",
" 0.435866 | \n",
" 1.765298 | \n",
" 0.762238 | \n",
" 0.819232 | \n",
"
\n",
" \n",
" min | \n",
" 4.300000 | \n",
" 2.000000 | \n",
" 1.000000 | \n",
" 0.100000 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" 25% | \n",
" 5.100000 | \n",
" 2.800000 | \n",
" 1.600000 | \n",
" 0.300000 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" 50% | \n",
" 5.800000 | \n",
" 3.000000 | \n",
" 4.350000 | \n",
" 1.300000 | \n",
" 1.000000 | \n",
"
\n",
" \n",
" 75% | \n",
" 6.400000 | \n",
" 3.300000 | \n",
" 5.100000 | \n",
" 1.800000 | \n",
" 2.000000 | \n",
"
\n",
" \n",
" max | \n",
" 7.900000 | \n",
" 4.400000 | \n",
" 6.900000 | \n",
" 2.500000 | \n",
" 2.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sepal length (cm) sepal width (cm) petal length (cm) \\\n",
"count 150.000000 150.000000 150.000000 \n",
"mean 5.843333 3.057333 3.758000 \n",
"std 0.828066 0.435866 1.765298 \n",
"min 4.300000 2.000000 1.000000 \n",
"25% 5.100000 2.800000 1.600000 \n",
"50% 5.800000 3.000000 4.350000 \n",
"75% 6.400000 3.300000 5.100000 \n",
"max 7.900000 4.400000 6.900000 \n",
"\n",
" petal width (cm) species \n",
"count 150.000000 150.000000 \n",
"mean 1.199333 1.000000 \n",
"std 0.762238 0.819232 \n",
"min 0.100000 0.000000 \n",
"25% 0.300000 0.000000 \n",
"50% 1.300000 1.000000 \n",
"75% 1.800000 2.000000 \n",
"max 2.500000 2.000000 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"X = df.iloc[:, :4]\n",
"y = df['species']"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((150, 4), (150,))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.shape, y.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# 学習データと検証データに分割\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1, stratify=y)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9777777777777777"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# ロジスティック回帰モデル (one-vs-rest)\n",
"model=LogisticRegression()\n",
"model.fit(X_train, y_train) # モデルを訓練データに適合\n",
"y_predicted=model.predict(X_test) # テストデータでラベルを予測\n",
"accuracy_score(y_test, y_predicted) # 予測精度(accuracy)の評価"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[15 0 0]\n",
" [ 0 15 0]\n",
" [ 0 1 14]]\n"
]
}
],
"source": [
"\n",
"print(confusion_matrix(y_test, y_predicted))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 15\n",
" 1 0.94 1.00 0.97 15\n",
" 2 1.00 0.93 0.97 15\n",
"\n",
" accuracy 0.98 45\n",
" macro avg 0.98 0.98 0.98 45\n",
"weighted avg 0.98 0.98 0.98 45\n",
"\n"
]
}
],
"source": [
"\n",
"print(classification_report(y_test, y_predicted))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9619047619047619\n",
"0.9777777777777777\n"
]
}
],
"source": [
"# Support Vector Machine (SVM)\n",
"clf = svm.SVC()\n",
"clf.fit(X_train, y_train) # モデルを訓練データに適合\n",
"y_predicted_clf = clf.predict(X_test)\n",
"print(accuracy_score(y_test, y_predicted_clf))\n",
"print(confusion_matrix(y_test, y_predicted_clf))\n",
"print(classification_report(y_test, y_predicted_clf))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2 回帰問題"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"irisデータセットを用いて、特徴量の一つ`petal length`から`petal width`を予測する回帰モデルをつくります"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"X = df[['petal length (cm)']]\n",
"y = df[['petal width (cm)']]"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"散布図を描いて相関を確認します"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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nXe69j98+LCIi4sTs2fPFiUlJeK1114Ter1e/Pvf/w56rdXV1QKAqK6uDvpzBQPrDy3WHzqRXLsQga8/pHP6t9xyC06dOoUnn3wSFRUVGDx4MD766CP06dMHAFBRUeG2Zr9v37746KOPMHv2bPzjH/9AZmYmFi9ejJtuuilUPwIRUUQJ6Tr9SOLLOthwxPpDi/WHTiTXDgS+/pDHMEQKo9GIxx57zG0lUCRh/aHF+kMnkmsHAl8/z/SJiKIIz/SJiKIImz4RURRh0yciiiJs+kREUYRNX4XNmzfj2muvRWZmJhRFwXvvvRfqklQrLCzERRddBJPJhLS0NFx//fXYv39/qMtSbcmSJRg6dCgSExORmJiIMWPG4OOPPw51WX4pLCyEoih48MEHQ12KKo8//jgURXG79erVK9Rl+aS8vBy//vWvkZycjLi4OAwbNgw7duwIdVmq5Obmtvn9K4qCGTNmdGpcNn0VLBYLLrzwQvz9738PdSk+KyoqwowZM7B161Zs2LABNpsNBQUFsFgsoS5NlaysLDz11FPYvn07tm/fjssuuwxTpkzB999/H+rSfLJt2zYsXboUQ4cODXUpPhk0aBAqKipct++++y7UJal25swZXHLJJdDr9fj4449RUlKChQsXokePHqEuTZVt27a5/e43bNgAALj55ps7N3BAruuNIgDEu+++G+oy/FZZWSkAiKKiolCX4reePXuKV199NdRlqFZbWyv69+8vNmzYIC699FLxwAMPhLokVR577DFx4YUXhroMv82bN0+MGzcu1GUEzAMPPCDOO+884XA4OjUOz/SjTHV1NQAgKSkpxJX4zm63Y9WqVbBYLBgzZkyoy1FtxowZuPrqq/GLX/wi1KX47ODBg8jMzETfvn1x66234vDhw6EuSbW1a9di1KhRuPnmm5GWlobhw4fjlVdeCXVZfrFarVi5ciXuuecen4IiPWHTjyJCCMyZMwfjxo3D4MGDQ12Oat999x0SEhJgNBoxffp0vPvuu7jgggtCXZYqq1atws6dOz1+/Ge4u/jii7FixQp8+umneOWVV3DixAmMHTsWp06dCnVpqhw+fBhLlixB//798emnn2L69OmYNWsWVqxYEerSfPbee+/h559/xrRp0zo/WGD+8IgeiODpnf/93/8Vffr0EaWlpaEuxScNDQ3i4MGDYtu2beLhhx8W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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize = (4,4))\n",
"plt.scatter(X,y, color = 'orange', alpha = .5)\n",
"plt.title('Scatter plot')\n",
"plt.xlabel('petal length')\n",
"plt.ylabel('petal width')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# 学習データと検証データに分割\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1,)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9217091797032136\n",
"0.039618634662187104\n"
]
}
],
"source": [
"lr = LinearRegression()\n",
"lr.fit(X_train, y_train)\n",
"print(lr.score(X_test, y_test)) # R2\n",
"y_predicted = lr.predict(X_test)\n",
"print(mean_squared_error(y_test, y_predicted))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"次に、学習された回帰モデルをプロットすることで、`petal_length`と`petal_width`の実際のデータをうまく表現できているかを確認します。"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABYIElEQVR4nO3deVxU9f7H8dcAgqiIS6KYJlRmqZVrheVSpqltVr+yxdzKpdRc8ma0562wvVvdNM1cK1u0sjLTSlBLMxU1c0kN1yBTC1QUBM7vj3MBkWEWZoYzM7yfjwePn+fMWT5n8nf5eM73fN82wzAMRERERIJEiNUFiIiIiHiTmhsREREJKmpuREREJKiouREREZGgouZGREREgoqaGxEREQkqam5EREQkqIRZXUBFKygo4I8//iAqKgqbzWZ1OSIiIuICwzA4cuQIDRs2JCTE8b2ZStfc/PHHHzRu3NjqMkRERKQc9u7dS6NGjRxuU+mam6ioKMD8cmrWrGlxNSIiIuKKrKwsGjduXPR73JFK19wUPoqqWbOmmhsREZEA48qQEg0oFhERkaCi5kZERESCipobERERCSpqbkRERCSoqLkRERGRoKLmRkRERIKKmhsREREJKmpuREREJKiouREREZGgouZGREREgoqaGxEREQkqam5EREQkqFS64EwREak88gsMVqcd5sCRE8REVeWS+DqEhjgPXvTGsX15br+WmwuhoeaPRdTciIhIUFq0KZ2nv9hMeuaJonWx0VV58vrm9GgZ69Nj+/Lcfu2qq2DpUrjpJpg/37IyLH0slZSURPv27YmKiiImJobevXuzbds2h/skJydjs9lK/WzdurWCqhYREX+3aFM6981ZV6K5AMjIPMF9c9axaFO6z46dtHCzz87ttw4cAJvNbGwANm+2tBxLm5uUlBSGDx/OqlWrWLJkCXl5eXTv3p1jx4453Xfbtm2kp6cX/TRt2rQCKhYREX+XX2Dw9BebMex8Vrju6S82k19gbwvPjm0AU5en+eTcfuuDD6B+/eLl8HD45Rfr6sHix1KLFi0qsTx9+nRiYmJYu3YtnTp1crhvTEwMtWrVcnqOnJwccnJyipazsrLKVauIiASG1WmHS901OZUBpGeeYHXaYRLOqevVYwM46ls8ObffMQzo0AFWrSpe9/TT8MQT1tX0P371tlRmZiYAderUcbpt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hS+QXHvttT49j5obLzh69Cg7duwoWk5LS2P9+vXUqVOHs846y8LK/NPw4cN5//33+fzzz4mKiiIjIwOA6OhoIiMjLa7O/zzyyCP07NmTxo0bc+TIEebOnUtycnKpt87EFBUVVWr8VvXq1albt67GdZVh3LhxXH/99Zx11lkcOHCAZ555hqysLPr37291aX5rzJgxdOjQgeeee47bbruN1atXM2XKFKZMmWJ1aX6roKCA6dOn079/f8LCfNx+GOKxpUuXGkCpn/79+1tdml+y910BxvTp060uzS8NGjTIaNKkiREeHm7Uq1fP6Nq1q7F48WKrywoonTt3NkaNGmV1GX6rT58+RmxsrFGlShWjYcOGxs0332z8+uuvVpfl97744gujZcuWRkREhHH++ecbU6ZMsbokv/bNN98YgLFt2zafn8tmGIbh2/ZJREREpOJoQLGIiIgEFTU3IiIiElTU3IiIiEhQUXMjIiIiQUXNjYiIiAQVNTciIiISVNTciIiISFBRcyMiIiJBRc2NiASE5ORkbDYb//zzT5nb2Gw2PvvsswqryZGnnnqKVq1aWV2GSKWk5kZEKtSMGTOoVauW1WV4lT81VSKi5kZERESCjJobEXFZly5dGDFiBCNGjKBWrVrUrVuXxx57jFMj6nJzc3nooYc488wzqV69OpdeeinJycmA+Whp4MCBZGZmYrPZsNlsPPXUUwDMmTOHdu3aERUVRYMGDbjzzjs5cOCAR/Xu37+fPn36ULt2berWrcuNN97Irl27ij4fMGAAvXv35qWXXiI2Npa6desyfPhwTp48WbRNeno61157LZGRkcTHx/P+++8TFxfHa6+9BkBcXBwAN910EzabrWi50OzZs4mLiyM6Oprbb7+dI0eOeHRNIuKcmhsRccvMmTMJCwvjp59+4vXXX+fVV1/lnXfeKfp84MCB/PDDD8ydO5eNGzdy66230qNHD7Zv306HDh147bXXqFmzJunp6aSnpzNu3DjAbIr+/e9/s2HDBj777DPS0tIYMGBAuevMzs7myiuvpEaNGixbtowVK1ZQo0YNevToQW5ubtF2S5cuZefOnSxdupSZM2cyY8YMZsyYUfR5v379+OOPP0hOTmbevHlMmTKlRNP1888/AzB9+nTS09OLlgF27tzJZ599xpdffsmXX35JSkoKEydOLPc1iYiLfJ47LiJBo3PnzsYFF1xgFBQUFK0bP368ccEFFxiGYRg7duwwbDabsX///hL7de3a1UhMTDQMwzCmT59uREdHOz3X6tWrDcA4cuSIYRiGsXTpUgMw/v777zL3AYxPP/3UMAzDmDZtmtGsWbMStebk5BiRkZHGN998YxiGYfTv399o0qSJkZeXV7TNrbfeavTp08cwDMPYsmWLARg///xz0efbt283AOPVV1+1e95CTz75pFGtWjUjKyuraN2//vUv49JLL3V67SLiGd25ERG3XHbZZdhstqLlhIQEtm/fTn5+PuvWrcMwDM477zxq1KhR9JOSksLOnTsdHjc1NZUbb7yRJk2aEBUVRZcuXQDYs2dPuepcu3YtO3bsICoqqqiOOnXqcOLEiRK1tGjRgtDQ0KLl2NjYojsz27ZtIywsjDZt2hR9fu6551K7dm2XaoiLiyMqKsrusUXEd8KsLkBEgkdBQQGhoaGsXbu2RMMAUKNGjTL3O3bsGN27d6d79+7MmTOHevXqsWfPHq655poSj5DcraVt27a89957pT6rV69e0Z+rVKlS4jObzUZBQQFAibFEpypr/ekcHVtEfEfNjYi4ZdWqVaWWmzZtSmhoKK1btyY/P58DBw7QsWNHu/uHh4eTn59fYt3WrVs5ePAgEydOpHHjxgCsWbPGozrbtGnDhx9+SExMDDVr1izXMc4//3zy8vJITU2lbdu2AOzYsaPUXDtVqlQpdU0iYh09lhIRt+zdu5exY8eybds2PvjgA9544w1GjRoFwHnnncddd91Fv379mD9/Pmlpafz88888//zzLFy4EDAf1Rw9epTvvvuOgwcPkp2dzVlnnUV4eDhvvPEGv//+OwsWLODf//63R3XeddddnHHGGdx4440sX76ctLQ0UlJSGDVqFPv27XPpGOeffz5XX301Q4YMYfXq1aSmpjJkyBAiIyNLPJqLi4vju+++IyMjg7///tujukXEc2puRMQt/fr14/jx41xyySUMHz6ckSNHMmTIkKLPp0+fTr9+/XjwwQdp1qwZN9xwAz/99FPRHZkOHTowbNgw+vTpQ7169XjhhReoV68eM2bM4OOPP6Z58+ZMnDiRl156yaM6q1WrxrJlyzjrrLO4+eabueCCCxg0aBDHjx93607OrFmzqF+/Pp06deKmm25i8ODBREVFUbVq1aJtXn75ZZYsWULjxo1p3bq1R3WLiOdshqsPj0Wk0uvSpQutWrUqmuOlMtq3bx+NGzfm22+/pWvXrlaXIyJ2aMyNiIgD33//PUePHuXCCy8kPT2dhx56iLi4ODp16mR1aSJSBjU3IiIOnDx5kkceeYTff/+dqKgoOnTowHvvvVfqTSgR8R96LCUiIiJBRQOKRUREJKiouREREZGgouZGREREgoqaGxEREQkqam5EREQkqKi5ERERkaCi5kZERESCipobERERCSr/D2LULnjTlvS7AAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X,y)\n",
"plt.plot(X, lr.predict(X), color = 'red') # 回帰直線をプロット\n",
"plt.xlabel('petal length')\n",
"plt.ylabel('petal width')\n",
"plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"モデルがデータをうまく表現できているかを確認する方法としては、残差のプロットも有効です。\n",
"\n",
"残差が0の周辺でランダムにばらついていれば、うまく表現できていて、そうでない別のパターン等がある場合は、モデルでは説明しきれていない情報があることが示唆されます。"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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fq1Zs0aXXXZZbZk73qb0XAFWR88QgCaLi4vTrFmzdN999+nll1/WL3/5Sy1ZskRZWVkaM2aMJkyYoHPPPVeHDx/Wzp07tW3bNr322muSpOHDh+uKK67QwIEDFRcXp507d+qFF15QRkaG2rdv7/Xrpaen65e//KUWLVoku92uyy+/XJ9//rkefvhhRUdH16mbnZ2t+Ph4TZw4UQ8++KDatm2rZcuWad++fXXqjRw5UnFxcZoyZYrmzJkju92ul156STt27Gieb1oDYmNjNXv2bN1///361a9+pZtvvlmHDh3SvHnz5HA4NGfOnNq6AwYMkCQtXLhQWVlZioiI0MCBA9WuXbsWjxsIW8GewQ0gfLhXPX3yySce1yoqKoyUlBSjT58+xqlTpwzDMIwdO3YY48aNMxISEgy73W507drVuPTSS40nn3yy9nEzZ840hg0bZsTFxRmRkZFGr169jLvuuss4ePBgbR1vq7eqqqqMu+++20hISDAcDocxYsQIY8OGDUaPHj3qrCYzDMPYvHmzMXLkSKNDhw7Gueeea8yZM8d45plnPFaTrV+/3sjIyDDat29vnHPOOcakSZOMbdu2GZKMpUuXNhiPN+5633//fYP16lvZ9swzzxgDBw402rVrZ8TExBhXX3218a9//cvj+zBp0iTjnHPOMWw2W4Mr5AB4ZzOMAOwHDwAAEKaYMwQAACyNZAgAAFgayRAAALA0kiEAAGBpJEMAAMDSSIYAAIClseniWdTU1Ojbb79Vp06daneoBQAAoc0wDB09elTdunVTmzYN9/2QDJ3Ft99+q+Tk5GCHAQAA/LBv3z517969wTokQ2fhPj9p3759Htv8IzhcLpdWr16tzMxM2e32YIeD09A2oYl2CV20TfMpLy9XcnKy13MQz0QydBbuobHo6GiSoRDhcrnUvn17RUdH88sjxNA2oYl2CV20TfPzZYoLE6gBAIClkQwBAABLIxkCAACWRjIEAAAsjWQIAABYGskQAACwNJIhAABgaSRDAADA0sIuGVq8eLFSU1PlcDg0dOhQffzxxz497p///Kfatm2rQYMGNW+AAAAgrIRVMrR8+XLdeeedeuCBB7R9+3ZdfPHFysrKUlFRUYOPKysr069+9StddtllLRQpALROhiEdOiQdOGDeGkawIwKaLqyO43jkkUc0ceJETZo0SZK0aNEivffe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z1d8fLxSUlI82mXKlCn661//qhkzZmjy5MnasGGDnn32Wb3yyivBegmtVmPbhvdMy5g2bZpefvllvfXWW+rUqVNtj09MTIyioqIkef4+430TJEFdywbU429/+5vRo0cPo127dsaQIUPqLEW95ZZbjFGjRtXeX7hwoXHeeecZDofDiIuLMy666CLjH//4RxCibt3cy7HP/HfLLbcYhuHZLoZhGOvWrTMGDx5stGvXzujZs6fxxBNPtHzgFtDYtuE90zK8tYkkY+nSpbV1eN+EBpth/HtmFgAAgAUxZwgAAFgayRAAALA0kiEAAGBpJEMAAMDSSIYAAIClkQwBAABLIxkCAACWRjIEICTMnTtXgwYNqr0/YcIEXXPNNS0ex969e2Wz2ZSfn9+sX6dnz55atGhRs34NAL4hGQJQrwkTJshms8lms8lut6tXr1665557dPz48Wb/2n/5y1+0bNkyn+q2VAIjSQMGDNCkSZO8XnvllVdkt9tVUlLS7HEACBySIQANGjt2rJxOp77++mvNnz9fixcv1j333OO1rsvlCtjXjYmJUWxsbMCeL1AmTpyoV199VSdOnPC49txzz+mKK65QYmJiECID4C+SIQANioyMVNeuXZWcnKzx48frF7/4hd58801JPwxtPffcc+rVq5ciIyNlGIbKysr061//WgkJCYqOjtall16qHTt21HneP/7xj0pMTFSnTp00ceJEVVZW1rl+5jBZTU2NFi5cqN69eysyMlIpKSn6wx/+IEm1p4EPHjxYNptNP/3pT2sft3TpUqWnp8vhcKhfv35avHhxna+zefNmDR48WA6HQ8OGDdP27dsb/H7k5OSoqqpKr732Wp3yoqIirVmzRhMnTtTu3bt19dVXKzExUR07dtSPf/xjvf/++/U+p7eerdLSUtlsNq1bt6627IsvvlB2drY6duyoxMRE5eTk6ODBg7XXX3/9dQ0YMEBRUVHq3LmzLr/88hbpxQPCHckQgEaJioqq0wNUWFioV199VW+88UbtH/Of//znKi4u1qpVq7R161YNGTJEl112mQ4fPixJevXVVzVnzhz94Q9/0JYtW5SUlOSRpJxp1qxZWrhwoWbPnq0vvvhCL7/8cm0PzObNmyVJ77//vpxOp1asWCFJevrpp/XAAw/oD3/4g3bu3KmHHnpIs2fP1v/8z/9Iko4fP64rrrhCaWlp2rp1q+bOnVtvr5db586ddfXVV2vp0qV1ypcuXarExERlZWXp2LFjys7O1vvvv6/t27drzJgxuvLKK1VUVOTjd9mT0+nUqFGjNGjQIG3ZskW5ubkqKSnRuHHjaq/ffPPNuu2227Rz506tW7dO1113nTh+EvBBcM+JBRDKbrnlFuPqq6+uvb9p0yajc+fOxrhx4wzDMIw5c+YYdrvd+O6772rrfPDBB0Z0dLRRWVlZ57nOO+88Y8mSJYZhGEZGRoYxZcqUOteHDx9uXHDBBV6/dnl5uREZGWk8/fTTXuPcs2ePIcnYvn17nfLk5GTj5ZdfrlP2X//1X0ZGRoZhGIaxZMkSIz4+3jh+/Hjt9SeeeMLrc53u3XffNWw2m7F7927DMAyjpqbG6NmzpzFr1qx6H3P++ecbjz/+eO39Hj16GI8++mi98R85csSQZKxdu9YwDMOYPXu2kZmZWec59+3bZ0gyCgoKjK1btxqSjL1799YbAwDv6BkC0KC///3v6tixoxwOhzIyMnTJJZfo8ccfr73eo0cPnXPOObX3t27dqmPHjqlz587q2LFj7b89e/Zo9+7dkqSdO3cqIyOjztc58/7pdu7cqaqqKl122WU+x/39999r3759mjhxYp045s+fXyeOCy64QO3bt/cpDrfMzEx17969tndozZo12rt3r2699VZJZo/Tfffdp/PPP1+xsbHq2LGjdu3a1aSeoa1bt2rt2rV1Xku/fv0kSbt379YFF1ygyy67TAMGDNANN9ygp59+WkeOHPH76wFW0jbYAQAIbT/72c/0xBNPyG63q1u3brLb7XWud+jQoc79mpoaJSUl1Znr4ubvhOioqKhGP6ampkaSOVQ2fPjwOtciIiIkye8hpDZt2mjChAlatmyZ5s2bp6VLl+qSSy5Rnz59JEn33nuv3nvvPT388MPq3bu3oqKidP311+vkyZP1Pt+Z8Zw5Gb2mpkZXXnmlFi5c6PH4pKQkRUREKC8vT+vXr9fq1av1+OOP64EHHtCmTZtq51QB8I6eIQAN6tChg3r37q0ePXp4JELeDBkyRMXFxWrbtq169+5d51+XLl0kSenp6dq4cWOdx515/3R9+vRRVFSUPvjgA6/X27VrJ0mqrq6uLUtMTNS5556rr7/+2iMOd3Jw/vnna8eOHaqoqPApjtPdeuut2r9/v1asWKEVK1Zo4sSJtdc+/vhjTZgwQddee60GDBigrl27au/evfU+l7tnzel01paduU3AkCFD9K9//Us9e/b0eD3uhNRms+knP/mJ5s2bp+3bt6tdu3ZauXKlT68HsDKSIQABdfnllysjI0PXXHON3nvvPe3du1fr16/X7373O23ZskWSdMcdd+i5557Tc889py+//FJz5szRv/71r3qf0+Fw6Le//a3uu+8+Pf/889q9e7c2btyoZ599VpKUkJCgqKio2knFZWVlkszVbgsWLNBf/vIXffnll/rss8+0dOlSPfLII5Kk8ePHq02bNpo4caK++OILrVq1Sg8//LBPrzM1NVWXXnqpfv3rX8tut+v666+vvda7d2+tWLFC+fn52rFjh8aPH1/bU+VNVFSURowYoT/+8Y/64osv9NFHH+l3v/tdnTrTpk3T4cOHdfPNN2vz5s36+uuvtXr1at12222qrq7Wpk2b9NBDD2nLli0qKirSihUr9P333ys9Pd2n1wNYGckQgICy2WxatWqVLrnkEt12223q27evbrrpJu3du7d29deNN96o3//+9/rtb3+roUOH6ptvvtF//ud/Nvi8s2fP1t13363f//73Sk9P14033qjvvvtOktS2bVs99thjWrJkibp166arr75akjRp0iQ988wzWrZsmQYMGKBRo0Zp2bJltT1DHTt21DvvvKMvvvhCgwcP1gMPPOB1GKo+EydO1JEjR3TTTTfVmXf06KOPKi4uTiNHjtSVV16pMWPGaMiQIQ0+13PPPSeXy6Vhw4bpjjvu0Pz58+tc79atm/75z3+qurpaY8aMUf/+/XXHHXcoJiZGbdq0UXR0tD766CNlZ2erb9+++t3vfqc///nPysrK8vn1AFZlM/wdNAcAAGgF6BkCAACWRjIEAAAsjWQIAABYGskQAACwNJIhAABgaSRDAADA0kiGAACApZEMAQAASyMZAgAAlkYyBAAALI1kCAAAWBrJEAAAsLT/DxTrz1x4z7DFAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(y_predicted, y_predicted - y_test, color = 'blue', alpha = 0.3) # 残差をプロット \n",
"plt.hlines(y = 0, xmin = min(y_predicted), xmax = max(y_predicted), color = 'black') # x軸に沿った直線をプロット\n",
"plt.title('Residual Plot')\n",
"plt.xlabel('Predicted Values')\n",
"plt.ylabel('Residuals')\n",
"plt.grid()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.8.16"
}
},
"nbformat": 4,
"nbformat_minor": 4
}