Skip to content

Instantly share code, notes, and snippets.

@self-methods
Created January 4, 2021 01:31
Show Gist options
  • Save self-methods/7724c58f3a9188bfcedadc374147b5cf to your computer and use it in GitHub Desktop.
Save self-methods/7724c58f3a9188bfcedadc374147b5cf 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": [],
"source": [
"import pandas as pd\n",
"from pandas import DataFrame, Series\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()\n",
"from sklearn.datasets import load_boston"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"boston = load_boston()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"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>CRIM</th>\n",
" <th>ZN</th>\n",
" <th>INDUS</th>\n",
" <th>CHAS</th>\n",
" <th>NOX</th>\n",
" <th>RM</th>\n",
" <th>AGE</th>\n",
" <th>DIS</th>\n",
" <th>RAD</th>\n",
" <th>TAX</th>\n",
" <th>PTRATIO</th>\n",
" <th>B</th>\n",
" <th>LSTAT</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.00632</td>\n",
" <td>18.0</td>\n",
" <td>2.31</td>\n",
" <td>0.0</td>\n",
" <td>0.538</td>\n",
" <td>6.575</td>\n",
" <td>65.2</td>\n",
" <td>4.0900</td>\n",
" <td>1.0</td>\n",
" <td>296.0</td>\n",
" <td>15.3</td>\n",
" <td>396.90</td>\n",
" <td>4.98</td>\n",
" <td>24.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.02731</td>\n",
" <td>0.0</td>\n",
" <td>7.07</td>\n",
" <td>0.0</td>\n",
" <td>0.469</td>\n",
" <td>6.421</td>\n",
" <td>78.9</td>\n",
" <td>4.9671</td>\n",
" <td>2.0</td>\n",
" <td>242.0</td>\n",
" <td>17.8</td>\n",
" <td>396.90</td>\n",
" <td>9.14</td>\n",
" <td>21.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.02729</td>\n",
" <td>0.0</td>\n",
" <td>7.07</td>\n",
" <td>0.0</td>\n",
" <td>0.469</td>\n",
" <td>7.185</td>\n",
" <td>61.1</td>\n",
" <td>4.9671</td>\n",
" <td>2.0</td>\n",
" <td>242.0</td>\n",
" <td>17.8</td>\n",
" <td>392.83</td>\n",
" <td>4.03</td>\n",
" <td>34.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.03237</td>\n",
" <td>0.0</td>\n",
" <td>2.18</td>\n",
" <td>0.0</td>\n",
" <td>0.458</td>\n",
" <td>6.998</td>\n",
" <td>45.8</td>\n",
" <td>6.0622</td>\n",
" <td>3.0</td>\n",
" <td>222.0</td>\n",
" <td>18.7</td>\n",
" <td>394.63</td>\n",
" <td>2.94</td>\n",
" <td>33.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.06905</td>\n",
" <td>0.0</td>\n",
" <td>2.18</td>\n",
" <td>0.0</td>\n",
" <td>0.458</td>\n",
" <td>7.147</td>\n",
" <td>54.2</td>\n",
" <td>6.0622</td>\n",
" <td>3.0</td>\n",
" <td>222.0</td>\n",
" <td>18.7</td>\n",
" <td>396.90</td>\n",
" <td>5.33</td>\n",
" <td>36.2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n",
"0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n",
"1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n",
"2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 \n",
"3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 \n",
"4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 \n",
"\n",
" PTRATIO B LSTAT price \n",
"0 15.3 396.90 4.98 24.0 \n",
"1 17.8 396.90 9.14 21.6 \n",
"2 17.8 392.83 4.03 34.7 \n",
"3 18.7 394.63 2.94 33.4 \n",
"4 18.7 396.90 5.33 36.2 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"boston_columns = boston.feature_names\n",
"X = pd.DataFrame(boston.data, columns=boston_columns)\n",
"y = pd.DataFrame(boston.target, columns=['price'])\n",
"boston_df = pd.concat([X,y], axis=1)\n",
"boston_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 506 entries, 0 to 505\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 CRIM 506 non-null float64\n",
" 1 ZN 506 non-null float64\n",
" 2 INDUS 506 non-null float64\n",
" 3 CHAS 506 non-null float64\n",
" 4 NOX 506 non-null float64\n",
" 5 RM 506 non-null float64\n",
" 6 AGE 506 non-null float64\n",
" 7 DIS 506 non-null float64\n",
" 8 RAD 506 non-null float64\n",
" 9 TAX 506 non-null float64\n",
" 10 PTRATIO 506 non-null float64\n",
" 11 B 506 non-null float64\n",
" 12 LSTAT 506 non-null float64\n",
" 13 price 506 non-null float64\n",
"dtypes: float64(14)\n",
"memory usage: 55.5 KB\n"
]
}
],
"source": [
"boston_df.info()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression as LR\n",
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"lr = LR()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"X = boston_df.drop('price', axis=1)\n",
"y = boston_df['price']\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=20)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression()"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"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>features</th>\n",
" <th>coefficient estimate</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>CRIM</td>\n",
" <td>-0.061930</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ZN</td>\n",
" <td>0.028119</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>INDUS</td>\n",
" <td>0.036681</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>CHAS</td>\n",
" <td>2.103975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>NOX</td>\n",
" <td>-20.335097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>RM</td>\n",
" <td>4.598358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>AGE</td>\n",
" <td>0.009518</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>DIS</td>\n",
" <td>-1.255650</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>RAD</td>\n",
" <td>0.227666</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>TAX</td>\n",
" <td>-0.010246</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>PTRATIO</td>\n",
" <td>-0.855652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>B</td>\n",
" <td>0.009362</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>LSTAT</td>\n",
" <td>-0.455759</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" features coefficient estimate\n",
"0 CRIM -0.061930\n",
"1 ZN 0.028119\n",
"2 INDUS 0.036681\n",
"3 CHAS 2.103975\n",
"4 NOX -20.335097\n",
"5 RM 4.598358\n",
"6 AGE 0.009518\n",
"7 DIS -1.255650\n",
"8 RAD 0.227666\n",
"9 TAX -0.010246\n",
"10 PTRATIO -0.855652\n",
"11 B 0.009362\n",
"12 LSTAT -0.455759"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"coeff_df = DataFrame(boston_columns, columns=['features'])\n",
"coeff_df['coefficient estimate'] = pd.Series(lr.coef_)\n",
"coeff_df"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([21.16529225, 26.98122565, 20.13238425, 23.77739816, 13.52933517,\n",
" 19.78781367, 17.21904896, 8.17083014, 18.97336579, 24.92643113,\n",
" 27.31648822, 16.56095912, 23.75393667, 22.07802703, 20.0720829 ,\n",
" 24.45285089, 31.14247284, 19.56161838, 14.7339778 , 17.70428623,\n",
" 38.38674348, 42.19652498, 27.23491992, 32.32243064, 25.61260041,\n",
" 26.32051289, 19.91815339, 25.06871068, 21.56340122, 23.56190758,\n",
" 20.95737493, 16.97344579, 22.67777514, 11.02937371, 30.07700301,\n",
" 20.40885338, 43.41589347, 22.31782684, 19.47047936, 31.37844715,\n",
" 7.35315484, 17.02572539, 18.56228142, 12.40449459, 23.27428193,\n",
" 28.60405594, 21.40018108, 20.32172238, 9.62621954, 14.44273682,\n",
" 35.45001989, 34.36879657, 11.73421146, 36.7666021 , 20.21108332,\n",
" 22.13254012, 20.2999414 , 18.66486633, 18.93973142, 22.58399613,\n",
" 27.25677358, 20.31699096, 19.81940653, 23.62245173, 17.83581498,\n",
" 19.30320011, 27.54553579, 26.34576727, 18.35682807, 18.36012099,\n",
" 34.20477474, 17.7141991 , 25.49840291, 22.87070575, 20.68237912,\n",
" 25.20766786, 24.05655396, 27.8424379 , 28.66907635, 16.67343161,\n",
" 9.23533211, 15.03021663, 23.00209324, 7.91549776, 28.29959409,\n",
" 24.78714417, 23.82446999, 18.13446691, 24.50574566, 26.8173704 ,\n",
" 23.86239076, 25.6874264 , 18.54611777, 12.85325568, 22.40860954,\n",
" 27.41637358, 19.68056608, 19.58360154, 17.48978589, 18.39798043,\n",
" 17.87212821, 25.99796821, 20.42151036, 38.43768426, 28.45350548,\n",
" 12.69534206, 16.84532487, 14.95637303, 16.05908897, 21.82069474,\n",
" 24.39770475, 32.1205306 , 20.58470258, 14.10651906, 28.90912648,\n",
" 33.92982917, 27.39056365, 20.96653101, 13.06681601, 24.30456683,\n",
" 34.17689664, 14.14254524, 9.58953153, 40.11004131, 23.65382644,\n",
" 18.09372281, 21.73536739, 43.31581816, 30.91641637, 21.26831527,\n",
" 15.85401686, 25.23367207, 17.61368865, 19.69243984, 32.84494909,\n",
" 34.51585071, 24.37545482, 24.98279708, 19.13136221, 26.86948734,\n",
" 22.75326174, 20.04619872, 24.32375569, 23.44865889, 12.91033781,\n",
" 28.95975157, 20.58555183, 21.97142418, 9.18319728, 21.01741664,\n",
" 23.48053115, 16.71138062])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict = lr.predict(X_test)\n",
"predict"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"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>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>CRIM</th>\n",
" <td>-0.061930</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ZN</th>\n",
" <td>0.028119</td>\n",
" </tr>\n",
" <tr>\n",
" <th>INDUS</th>\n",
" <td>0.036681</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CHAS</th>\n",
" <td>2.103975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>NOX</th>\n",
" <td>-20.335097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RM</th>\n",
" <td>4.598358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AGE</th>\n",
" <td>0.009518</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DIS</th>\n",
" <td>-1.255650</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RAD</th>\n",
" <td>0.227666</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TAX</th>\n",
" <td>-0.010246</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PTRATIO</th>\n",
" <td>-0.855652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>0.009362</td>\n",
" </tr>\n",
" <tr>\n",
" <th>LSTAT</th>\n",
" <td>-0.455759</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0\n",
"CRIM -0.061930\n",
"ZN 0.028119\n",
"INDUS 0.036681\n",
"CHAS 2.103975\n",
"NOX -20.335097\n",
"RM 4.598358\n",
"AGE 0.009518\n",
"DIS -1.255650\n",
"RAD 0.227666\n",
"TAX -0.010246\n",
"PTRATIO -0.855652\n",
"B 0.009362\n",
"LSTAT -0.455759"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"coef_df = pd.DataFrame(lr.coef_,X_train.columns)\n",
"coef_df"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"28.687850966054768"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.intercept_"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.039166613497879"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import mean_squared_error as MSE\n",
"import numpy as np\n",
"rmse = np.sqrt(MSE(y_test, predict))\n",
"rmse"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7023964981707973"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import r2_score\n",
"r2 = r2_score(y_test, predict)\n",
"r2"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='Measured Price', ylabel='Predict Price'>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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mCkJAKJSu379Ok2aNGHw4MF53ps0aRJNmjThzp07FVCykluzZo0+02VOR44c4cknnyQgIICePXsSEBBA7969OXjwYL7X+fLLL1m9erWxiyvMgOwDEJWejY0NV69e5caNG9SrVw+AlJQUTpw4UcElM5z69evz7bff6l+fO3eOgQMHcuDAAZydnXN9duDAgeVdPFFFSQAQlZ6lpSVdu3blu+++02eL/PHHH3nppZdYu3at/nMHDx5k1apVaLVabG1tmThxIq1ateL27dtMnz6duLg4YmNjqVevHkuXLsXFxYUvvviCLVu2oFarsbGxYdasWTRq1IgXX3yRZcuW0bx5cwD965o1azJo0CC8vLy4ceMGGzdu5Pr16yxatIjU1FQsLCwYNWoUHTt2RKvVEhwcTGhoKC4uLri4uODg4FCs7/zYY49ha2vLjRs32Lx5MydPniQmJoYmTZrg6enJ3bt3mT59OlevXmX69OncuXMHCwsL3n77bbp160Z0dDSzZs0iKioKrVaLn5+fvu6E0CtzQmkhjCgyMlJp2bKlcvr0aaVLly76nw8dOlQ5f/684u3trcTFxSlXr15V/P39lTt37iiKoigXLlxQnnvuOSU5OVlZv3698sknnyiKkpVr/c0331TWrFmjZGRkKM2aNVOio6MVRVGUnTt3Klu2bFEURVE6duyohIWF6e+X/ToyMlLx9vZWjh49qiiKosTHxyudO3dWIiMjFUVRlFu3bint27dXbty4oaxfv175z3/+o2g0GiU5OVnp1auXMnHixDzf8c8//1T8/Pxy/eyHH35Q2rVrp6SkpCghISHKK6+8os8PHxISosycOVNRFEXp2bOnsmnTJkVRFOXmzZvKSy+9pCQmJipDhgxRDhw4oCiKoqSlpSlDhgxR9uzZU5b/FaIKkh6AMAlPPPEElpaWnDlzBhcXF5KTk/H29ta//8cffxATE8Nrr72m/5lKpeLatWsMHTqUY8eOsW7dOsLDw7l48SItWrTA0tKSLl26EBgYSIcOHXj++efx9fUtsixWVlb61NYnT54kNjaWd955J9d9z58/z+HDh/H398fa2hpra2u6d+/O+fPn873mtWvXCAgIACAjI4M6deqwcuVKqlWrBkDLli2xssr95xofH8+5c+fo168fAHXr1uWnn34iJSWFo0ePcu/ePZYtWwZkDZmdO3eObt26Ffn9hPmQACBMRo8ePdi1axfOzs76xjKbTqfDx8eHpUuX6n8WFRWFm5sbCxcuJCwsjD59+tC2bVsyMjJQ7mdAWbRoERcuXCA0NJTVq1fz7bff6htNJUeWlPT0dP1/W1tb6xvjzMxMvLy82L59u/796OhonJ2d2bp1a64y5sxu+bCH5wAeVr169Tw/yy5DzrTAV65cwdXVFUVR2LJliz6A3LlzBxsbmwKvL8yTrAISJiMgIIB9+/axd+9e/P39c73n4+PDH3/8weXLlwE4dOgQPXr0IC0tjd9//52hQ4fSs2dPXFxcCA0NJTMzkzt37uDr64uTkxOvvfYa7733HqdPnwbA2dmZM2fOAFmrdHKm4s2pZcuWREREcPToUQDOnj3LK6+8QnR0NC+88ALffPMNGo0GjUbD3r17DVof9vb2NGvWjG+++QbICngDBw4kLS2Nli1b6s8ZTkhI0E8oC5GT9ACEyahduzZeXl44ODjg5OSU671GjRoxa9Ysxo0bh6IoWFlZsWrVKuzs7HjnnXdYsGABy5YtQ61W07p1a65du4azszNvv/02r732Gra2tlhaWhIcHAzA+PHjCQoKYuvWrTRr1oxmzZrlWyZnZ2dCQkL06XsVRWHBggW4u7sTGBjItWvX8Pf3x8nJCU9PT4PXyeLFi5k5cyYbN25EpVIxZ84cXF1dWbRoEbNnz6Z79+6kp6fj7+9Pjx49DH5/YdokG6gQQpgpGQISQggzJQFACCHMlAQAIYQwUxIAhBDCTEkAEEIIMyUBQAghzJQEACGEMFMSAIQQwkz9P+XPj0owD05NAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y_max = np.max(y_test)\n",
"y_min = np.min(y_test)\n",
"plt.xlabel('Measured Price')\n",
"plt.ylabel('Predict Price')\n",
"plt.plot([y_min,y_max],[y_min,y_max],'k')\n",
"sns.scatterplot(x=y_test, y=predict)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Price difference')"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(y_test, (y_test-predict), c='b', alpha=0.5)\n",
"plt.hlines(y=0, xmin=0, xmax=50, colors='black')\n",
"plt.xlabel('Price')\n",
"plt.ylabel('Price difference')"
]
}
],
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment