Skip to content

Instantly share code, notes, and snippets.

@esjacobs
Created July 25, 2018 17:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save esjacobs/dce62966bba756a7b9753a965cbda14f to your computer and use it in GitHub Desktop.
Save esjacobs/dce62966bba756a7b9753a965cbda14f to your computer and use it in GitHub Desktop.
Ame Iowa Housing Prices
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ames Housing Data and House Price Prediction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First we start off by importing anything and everything that might be helpful here."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import scipy.stats as stats\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"from sklearn import linear_model\n",
"from sklearn.metrics import mean_squared_error\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.linear_model import Ridge, Lasso, ElasticNet, LinearRegression, RidgeCV, LassoCV, ElasticNetCV\n",
"from sklearn.model_selection import cross_val_score, cross_val_predict, train_test_split\n",
"import warnings\n",
"warnings.simplefilter(\"ignore\")\n",
"\n",
"sns.set_style('darkgrid')\n",
"\n",
"%config InlineBackend.figure_format = 'retina'\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we import out data files, first saving the names as variables."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"train_csv = '/Users/evanjacobs/dsi/DSI-US-4/project-2/train.csv'\n",
"test_csv = '/Users/evanjacobs/dsi/DSI-US-4/project-2/test.csv'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For now, we'll just import out training data, so we don't accidentally alter the precious testing data. "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(train_csv)\n",
"finaltest = pd.read_csv(test_csv)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we're going to do our test train split, and here we'll set our y to be our target, 'SalePrice'."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"X = df.drop(['SalePrice'], axis=1)\n",
"y = df.SalePrice.values\n",
"X_full = df.drop(['SalePrice'], axis=1)\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's have a look, shall we?"
]
},
{
"cell_type": "code",
"execution_count": 30,
"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>Id</th>\n",
" <th>PID</th>\n",
" <th>MS SubClass</th>\n",
" <th>MS Zoning</th>\n",
" <th>Lot Frontage</th>\n",
" <th>Lot Area</th>\n",
" <th>Street</th>\n",
" <th>Alley</th>\n",
" <th>Lot Shape</th>\n",
" <th>Land Contour</th>\n",
" <th>...</th>\n",
" <th>3Ssn Porch</th>\n",
" <th>Screen Porch</th>\n",
" <th>Pool Area</th>\n",
" <th>Pool QC</th>\n",
" <th>Fence</th>\n",
" <th>Misc Feature</th>\n",
" <th>Misc Val</th>\n",
" <th>Mo Sold</th>\n",
" <th>Yr Sold</th>\n",
" <th>Sale Type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>484</th>\n",
" <td>1875</td>\n",
" <td>534201040</td>\n",
" <td>20</td>\n",
" <td>RL</td>\n",
" <td>70.0</td>\n",
" <td>8050</td>\n",
" <td>Pave</td>\n",
" <td>NaN</td>\n",
" <td>Reg</td>\n",
" <td>Lvl</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2007</td>\n",
" <td>WD</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1234</th>\n",
" <td>178</td>\n",
" <td>902206040</td>\n",
" <td>50</td>\n",
" <td>RM</td>\n",
" <td>50.0</td>\n",
" <td>5500</td>\n",
" <td>Pave</td>\n",
" <td>NaN</td>\n",
" <td>Reg</td>\n",
" <td>Lvl</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>2010</td>\n",
" <td>WD</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1917</th>\n",
" <td>20</td>\n",
" <td>527302110</td>\n",
" <td>20</td>\n",
" <td>RL</td>\n",
" <td>85.0</td>\n",
" <td>13175</td>\n",
" <td>Pave</td>\n",
" <td>NaN</td>\n",
" <td>Reg</td>\n",
" <td>Lvl</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>MnPrv</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>2010</td>\n",
" <td>WD</td>\n",
" </tr>\n",
" <tr>\n",
" <th>640</th>\n",
" <td>2420</td>\n",
" <td>528228280</td>\n",
" <td>120</td>\n",
" <td>RL</td>\n",
" <td>43.0</td>\n",
" <td>3087</td>\n",
" <td>Pave</td>\n",
" <td>NaN</td>\n",
" <td>Reg</td>\n",
" <td>Lvl</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>2006</td>\n",
" <td>New</td>\n",
" </tr>\n",
" <tr>\n",
" <th>811</th>\n",
" <td>1448</td>\n",
" <td>907202160</td>\n",
" <td>80</td>\n",
" <td>RL</td>\n",
" <td>NaN</td>\n",
" <td>10970</td>\n",
" <td>Pave</td>\n",
" <td>NaN</td>\n",
" <td>IR1</td>\n",
" <td>Low</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>MnPrv</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>2008</td>\n",
" <td>WD</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 80 columns</p>\n",
"</div>"
],
"text/plain": [
" Id PID MS SubClass MS Zoning Lot Frontage Lot Area Street \\\n",
"484 1875 534201040 20 RL 70.0 8050 Pave \n",
"1234 178 902206040 50 RM 50.0 5500 Pave \n",
"1917 20 527302110 20 RL 85.0 13175 Pave \n",
"640 2420 528228280 120 RL 43.0 3087 Pave \n",
"811 1448 907202160 80 RL NaN 10970 Pave \n",
"\n",
" Alley Lot Shape Land Contour ... 3Ssn Porch Screen Porch \\\n",
"484 NaN Reg Lvl ... 0 0 \n",
"1234 NaN Reg Lvl ... 0 0 \n",
"1917 NaN Reg Lvl ... 0 0 \n",
"640 NaN Reg Lvl ... 0 0 \n",
"811 NaN IR1 Low ... 0 0 \n",
"\n",
" Pool Area Pool QC Fence Misc Feature Misc Val Mo Sold Yr Sold \\\n",
"484 0 NaN NaN NaN 0 3 2007 \n",
"1234 0 NaN NaN NaN 0 4 2010 \n",
"1917 0 NaN MnPrv NaN 0 2 2010 \n",
"640 0 NaN NaN NaN 0 11 2006 \n",
"811 0 NaN MnPrv NaN 0 10 2008 \n",
"\n",
" Sale Type \n",
"484 WD \n",
"1234 WD \n",
"1917 WD \n",
"640 New \n",
"811 WD \n",
"\n",
"[5 rows x 80 columns]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"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>Id</th>\n",
" <th>PID</th>\n",
" <th>MS SubClass</th>\n",
" <th>Lot Frontage</th>\n",
" <th>Lot Area</th>\n",
" <th>Overall Qual</th>\n",
" <th>Overall Cond</th>\n",
" <th>Year Built</th>\n",
" <th>Year Remod/Add</th>\n",
" <th>Mas Vnr Area</th>\n",
" <th>...</th>\n",
" <th>Garage Area</th>\n",
" <th>Wood Deck SF</th>\n",
" <th>Open Porch SF</th>\n",
" <th>Enclosed Porch</th>\n",
" <th>3Ssn Porch</th>\n",
" <th>Screen Porch</th>\n",
" <th>Pool Area</th>\n",
" <th>Misc Val</th>\n",
" <th>Mo Sold</th>\n",
" <th>Yr Sold</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1538.000000</td>\n",
" <td>1.538000e+03</td>\n",
" <td>1538.000000</td>\n",
" <td>1294.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1521.000000</td>\n",
" <td>...</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" <td>1538.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1469.118336</td>\n",
" <td>7.148299e+08</td>\n",
" <td>57.542263</td>\n",
" <td>69.540958</td>\n",
" <td>10179.084525</td>\n",
" <td>6.109883</td>\n",
" <td>5.571521</td>\n",
" <td>1971.674252</td>\n",
" <td>1984.081274</td>\n",
" <td>99.113083</td>\n",
" <td>...</td>\n",
" <td>471.424577</td>\n",
" <td>95.207412</td>\n",
" <td>49.256177</td>\n",
" <td>23.018856</td>\n",
" <td>2.914174</td>\n",
" <td>17.200260</td>\n",
" <td>3.197659</td>\n",
" <td>55.282835</td>\n",
" <td>6.195709</td>\n",
" <td>2007.784785</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>844.226713</td>\n",
" <td>1.887552e+08</td>\n",
" <td>43.351837</td>\n",
" <td>22.987056</td>\n",
" <td>7353.026485</td>\n",
" <td>1.405082</td>\n",
" <td>1.110848</td>\n",
" <td>30.258868</td>\n",
" <td>21.200024</td>\n",
" <td>174.156041</td>\n",
" <td>...</td>\n",
" <td>216.396308</td>\n",
" <td>132.411630</td>\n",
" <td>69.244398</td>\n",
" <td>60.037423</td>\n",
" <td>27.776465</td>\n",
" <td>59.571394</td>\n",
" <td>43.605315</td>\n",
" <td>617.362905</td>\n",
" <td>2.753136</td>\n",
" <td>1.313997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>5.263011e+08</td>\n",
" <td>20.000000</td>\n",
" <td>21.000000</td>\n",
" <td>1300.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1879.000000</td>\n",
" <td>1950.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" <td>2006.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>746.500000</td>\n",
" <td>5.284567e+08</td>\n",
" <td>20.000000</td>\n",
" <td>59.000000</td>\n",
" <td>7455.500000</td>\n",
" <td>5.000000</td>\n",
" <td>5.000000</td>\n",
" <td>1953.000000</td>\n",
" <td>1964.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>316.250000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>4.000000</td>\n",
" <td>2007.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1496.500000</td>\n",
" <td>5.354546e+08</td>\n",
" <td>50.000000</td>\n",
" <td>69.000000</td>\n",
" <td>9465.000000</td>\n",
" <td>6.000000</td>\n",
" <td>5.000000</td>\n",
" <td>1975.000000</td>\n",
" <td>1993.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>480.000000</td>\n",
" <td>0.000000</td>\n",
" <td>28.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>6.000000</td>\n",
" <td>2008.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2174.750000</td>\n",
" <td>9.071855e+08</td>\n",
" <td>70.000000</td>\n",
" <td>80.000000</td>\n",
" <td>11635.500000</td>\n",
" <td>7.000000</td>\n",
" <td>6.000000</td>\n",
" <td>2001.000000</td>\n",
" <td>2004.000000</td>\n",
" <td>162.000000</td>\n",
" <td>...</td>\n",
" <td>576.000000</td>\n",
" <td>168.000000</td>\n",
" <td>72.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>8.000000</td>\n",
" <td>2009.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>2930.000000</td>\n",
" <td>9.241520e+08</td>\n",
" <td>190.000000</td>\n",
" <td>313.000000</td>\n",
" <td>159000.000000</td>\n",
" <td>10.000000</td>\n",
" <td>9.000000</td>\n",
" <td>2010.000000</td>\n",
" <td>2010.000000</td>\n",
" <td>1600.000000</td>\n",
" <td>...</td>\n",
" <td>1418.000000</td>\n",
" <td>1424.000000</td>\n",
" <td>547.000000</td>\n",
" <td>432.000000</td>\n",
" <td>508.000000</td>\n",
" <td>490.000000</td>\n",
" <td>800.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>12.000000</td>\n",
" <td>2010.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8 rows × 38 columns</p>\n",
"</div>"
],
"text/plain": [
" Id PID MS SubClass Lot Frontage Lot Area \\\n",
"count 1538.000000 1.538000e+03 1538.000000 1294.000000 1538.000000 \n",
"mean 1469.118336 7.148299e+08 57.542263 69.540958 10179.084525 \n",
"std 844.226713 1.887552e+08 43.351837 22.987056 7353.026485 \n",
"min 1.000000 5.263011e+08 20.000000 21.000000 1300.000000 \n",
"25% 746.500000 5.284567e+08 20.000000 59.000000 7455.500000 \n",
"50% 1496.500000 5.354546e+08 50.000000 69.000000 9465.000000 \n",
"75% 2174.750000 9.071855e+08 70.000000 80.000000 11635.500000 \n",
"max 2930.000000 9.241520e+08 190.000000 313.000000 159000.000000 \n",
"\n",
" Overall Qual Overall Cond Year Built Year Remod/Add Mas Vnr Area \\\n",
"count 1538.000000 1538.000000 1538.000000 1538.000000 1521.000000 \n",
"mean 6.109883 5.571521 1971.674252 1984.081274 99.113083 \n",
"std 1.405082 1.110848 30.258868 21.200024 174.156041 \n",
"min 1.000000 1.000000 1879.000000 1950.000000 0.000000 \n",
"25% 5.000000 5.000000 1953.000000 1964.000000 0.000000 \n",
"50% 6.000000 5.000000 1975.000000 1993.000000 0.000000 \n",
"75% 7.000000 6.000000 2001.000000 2004.000000 162.000000 \n",
"max 10.000000 9.000000 2010.000000 2010.000000 1600.000000 \n",
"\n",
" ... Garage Area Wood Deck SF Open Porch SF Enclosed Porch \\\n",
"count ... 1538.000000 1538.000000 1538.000000 1538.000000 \n",
"mean ... 471.424577 95.207412 49.256177 23.018856 \n",
"std ... 216.396308 132.411630 69.244398 60.037423 \n",
"min ... 0.000000 0.000000 0.000000 0.000000 \n",
"25% ... 316.250000 0.000000 0.000000 0.000000 \n",
"50% ... 480.000000 0.000000 28.000000 0.000000 \n",
"75% ... 576.000000 168.000000 72.000000 0.000000 \n",
"max ... 1418.000000 1424.000000 547.000000 432.000000 \n",
"\n",
" 3Ssn Porch Screen Porch Pool Area Misc Val Mo Sold \\\n",
"count 1538.000000 1538.000000 1538.000000 1538.000000 1538.000000 \n",
"mean 2.914174 17.200260 3.197659 55.282835 6.195709 \n",
"std 27.776465 59.571394 43.605315 617.362905 2.753136 \n",
"min 0.000000 0.000000 0.000000 0.000000 1.000000 \n",
"25% 0.000000 0.000000 0.000000 0.000000 4.000000 \n",
"50% 0.000000 0.000000 0.000000 0.000000 6.000000 \n",
"75% 0.000000 0.000000 0.000000 0.000000 8.000000 \n",
"max 508.000000 490.000000 800.000000 17000.000000 12.000000 \n",
"\n",
" Yr Sold \n",
"count 1538.000000 \n",
"mean 2007.784785 \n",
"std 1.313997 \n",
"min 2006.000000 \n",
"25% 2007.000000 \n",
"50% 2008.000000 \n",
"75% 2009.000000 \n",
"max 2010.000000 \n",
"\n",
"[8 rows x 38 columns]"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.describe()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 1538 entries, 484 to 1169\n",
"Data columns (total 80 columns):\n",
"Id 1538 non-null int64\n",
"PID 1538 non-null int64\n",
"MS SubClass 1538 non-null int64\n",
"MS Zoning 1538 non-null object\n",
"Lot Frontage 1294 non-null float64\n",
"Lot Area 1538 non-null int64\n",
"Street 1538 non-null object\n",
"Alley 110 non-null object\n",
"Lot Shape 1538 non-null object\n",
"Land Contour 1538 non-null object\n",
"Utilities 1538 non-null object\n",
"Lot Config 1538 non-null object\n",
"Land Slope 1538 non-null object\n",
"Neighborhood 1538 non-null object\n",
"Condition 1 1538 non-null object\n",
"Condition 2 1538 non-null object\n",
"Bldg Type 1538 non-null object\n",
"House Style 1538 non-null object\n",
"Overall Qual 1538 non-null int64\n",
"Overall Cond 1538 non-null int64\n",
"Year Built 1538 non-null int64\n",
"Year Remod/Add 1538 non-null int64\n",
"Roof Style 1538 non-null object\n",
"Roof Matl 1538 non-null object\n",
"Exterior 1st 1538 non-null object\n",
"Exterior 2nd 1538 non-null object\n",
"Mas Vnr Type 1521 non-null object\n",
"Mas Vnr Area 1521 non-null float64\n",
"Exter Qual 1538 non-null object\n",
"Exter Cond 1538 non-null object\n",
"Foundation 1538 non-null object\n",
"Bsmt Qual 1501 non-null object\n",
"Bsmt Cond 1501 non-null object\n",
"Bsmt Exposure 1498 non-null object\n",
"BsmtFin Type 1 1501 non-null object\n",
"BsmtFin SF 1 1538 non-null float64\n",
"BsmtFin Type 2 1500 non-null object\n",
"BsmtFin SF 2 1538 non-null float64\n",
"Bsmt Unf SF 1538 non-null float64\n",
"Total Bsmt SF 1538 non-null float64\n",
"Heating 1538 non-null object\n",
"Heating QC 1538 non-null object\n",
"Central Air 1538 non-null object\n",
"Electrical 1538 non-null object\n",
"1st Flr SF 1538 non-null int64\n",
"2nd Flr SF 1538 non-null int64\n",
"Low Qual Fin SF 1538 non-null int64\n",
"Gr Liv Area 1538 non-null int64\n",
"Bsmt Full Bath 1537 non-null float64\n",
"Bsmt Half Bath 1537 non-null float64\n",
"Full Bath 1538 non-null int64\n",
"Half Bath 1538 non-null int64\n",
"Bedroom AbvGr 1538 non-null int64\n",
"Kitchen AbvGr 1538 non-null int64\n",
"Kitchen Qual 1538 non-null object\n",
"TotRms AbvGrd 1538 non-null int64\n",
"Functional 1538 non-null object\n",
"Fireplaces 1538 non-null int64\n",
"Fireplace Qu 798 non-null object\n",
"Garage Type 1449 non-null object\n",
"Garage Yr Blt 1449 non-null float64\n",
"Garage Finish 1449 non-null object\n",
"Garage Cars 1538 non-null float64\n",
"Garage Area 1538 non-null float64\n",
"Garage Qual 1449 non-null object\n",
"Garage Cond 1449 non-null object\n",
"Paved Drive 1538 non-null object\n",
"Wood Deck SF 1538 non-null int64\n",
"Open Porch SF 1538 non-null int64\n",
"Enclosed Porch 1538 non-null int64\n",
"3Ssn Porch 1538 non-null int64\n",
"Screen Porch 1538 non-null int64\n",
"Pool Area 1538 non-null int64\n",
"Pool QC 9 non-null object\n",
"Fence 286 non-null object\n",
"Misc Feature 50 non-null object\n",
"Misc Val 1538 non-null int64\n",
"Mo Sold 1538 non-null int64\n",
"Yr Sold 1538 non-null int64\n",
"Sale Type 1538 non-null object\n",
"dtypes: float64(11), int64(27), object(42)\n",
"memory usage: 973.3+ KB\n"
]
}
],
"source": [
"X_train.info()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Id', 'PID', 'MS SubClass', 'MS Zoning', 'Lot Frontage', 'Lot Area',\n",
" 'Street', 'Alley', 'Lot Shape', 'Land Contour', 'Utilities',\n",
" 'Lot Config', 'Land Slope', 'Neighborhood', 'Condition 1',\n",
" 'Condition 2', 'Bldg Type', 'House Style', 'Overall Qual',\n",
" 'Overall Cond', 'Year Built', 'Year Remod/Add', 'Roof Style',\n",
" 'Roof Matl', 'Exterior 1st', 'Exterior 2nd', 'Mas Vnr Type',\n",
" 'Mas Vnr Area', 'Exter Qual', 'Exter Cond', 'Foundation', 'Bsmt Qual',\n",
" 'Bsmt Cond', 'Bsmt Exposure', 'BsmtFin Type 1', 'BsmtFin SF 1',\n",
" 'BsmtFin Type 2', 'BsmtFin SF 2', 'Bsmt Unf SF', 'Total Bsmt SF',\n",
" 'Heating', 'Heating QC', 'Central Air', 'Electrical', '1st Flr SF',\n",
" '2nd Flr SF', 'Low Qual Fin SF', 'Gr Liv Area', 'Bsmt Full Bath',\n",
" 'Bsmt Half Bath', 'Full Bath', 'Half Bath', 'Bedroom AbvGr',\n",
" 'Kitchen AbvGr', 'Kitchen Qual', 'TotRms AbvGrd', 'Functional',\n",
" 'Fireplaces', 'Fireplace Qu', 'Garage Type', 'Garage Yr Blt',\n",
" 'Garage Finish', 'Garage Cars', 'Garage Area', 'Garage Qual',\n",
" 'Garage Cond', 'Paved Drive', 'Wood Deck SF', 'Open Porch SF',\n",
" 'Enclosed Porch', '3Ssn Porch', 'Screen Porch', 'Pool Area', 'Pool QC',\n",
" 'Fence', 'Misc Feature', 'Misc Val', 'Mo Sold', 'Yr Sold', 'Sale Type'],\n",
" dtype='object')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Closing up the column names so I can use dot notation."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"def colclean(column_list): \n",
" columns=[]\n",
" for n in column_list:\n",
" n = n.lower().replace(' ','')\n",
" columns.append(n)\n",
" return columns\n",
"colclean(df.columns)\n",
"X_train.columns = colclean(X_train.columns)\n",
"X_test.columns = colclean(X_test.columns)\n",
"X_train.columns\n",
"X_full.columns = colclean(X_full.columns)\n",
"finaltest.columns = colclean(finaltest.columns)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Checking for duplicate PIDs. "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.duplicated(subset='pid', keep='first').sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Got any nulls lying around?"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"id 0\n",
"pid 0\n",
"mssubclass 0\n",
"mszoning 0\n",
"lotfrontage 244\n",
"lotarea 0\n",
"street 0\n",
"alley 1428\n",
"lotshape 0\n",
"landcontour 0\n",
"utilities 0\n",
"lotconfig 0\n",
"landslope 0\n",
"neighborhood 0\n",
"condition1 0\n",
"condition2 0\n",
"bldgtype 0\n",
"housestyle 0\n",
"overallqual 0\n",
"overallcond 0\n",
"yearbuilt 0\n",
"yearremod/add 0\n",
"roofstyle 0\n",
"roofmatl 0\n",
"exterior1st 0\n",
"exterior2nd 0\n",
"masvnrtype 17\n",
"masvnrarea 17\n",
"exterqual 0\n",
"extercond 0\n",
" ... \n",
"fullbath 0\n",
"halfbath 0\n",
"bedroomabvgr 0\n",
"kitchenabvgr 0\n",
"kitchenqual 0\n",
"totrmsabvgrd 0\n",
"functional 0\n",
"fireplaces 0\n",
"fireplacequ 740\n",
"garagetype 89\n",
"garageyrblt 89\n",
"garagefinish 89\n",
"garagecars 0\n",
"garagearea 0\n",
"garagequal 89\n",
"garagecond 89\n",
"paveddrive 0\n",
"wooddecksf 0\n",
"openporchsf 0\n",
"enclosedporch 0\n",
"3ssnporch 0\n",
"screenporch 0\n",
"poolarea 0\n",
"poolqc 1529\n",
"fence 1252\n",
"miscfeature 1488\n",
"miscval 0\n",
"mosold 0\n",
"yrsold 0\n",
"saletype 0\n",
"Length: 80, dtype: int64"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's a trick I learned."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"lotfrontage 244\n",
"alley 1428\n",
"masvnrtype 17\n",
"masvnrarea 17\n",
"bsmtqual 37\n",
"bsmtcond 37\n",
"bsmtexposure 40\n",
"bsmtfintype1 37\n",
"bsmtfintype2 38\n",
"bsmtfullbath 1\n",
"bsmthalfbath 1\n",
"fireplacequ 740\n",
"garagetype 89\n",
"garageyrblt 89\n",
"garagefinish 89\n",
"garagequal 89\n",
"garagecond 89\n",
"poolqc 1529\n",
"fence 1252\n",
"miscfeature 1488\n",
"dtype: int64"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.isna().sum()[X_train.isna().sum() !=0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Having a look at what the object column with null values looks like. "
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([nan, 'TA', 'Gd', 'Ex', 'Fa'], dtype=object)"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.poolqc.unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just for the sake of time, going to fill all null values with their numerical averages for numerical columns."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"X_train = X_train.fillna(X_train.mean())\n",
"X_test = X_test.fillna(X_test.mean())\n",
"X_full = X_full.fillna(X_full.mean())\n",
"finaltest = finaltest.fillna(finaltest.mean())"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 1538 entries, 484 to 1169\n",
"Data columns (total 80 columns):\n",
"id 1538 non-null int64\n",
"pid 1538 non-null int64\n",
"mssubclass 1538 non-null int64\n",
"mszoning 1538 non-null object\n",
"lotfrontage 1538 non-null float64\n",
"lotarea 1538 non-null int64\n",
"street 1538 non-null object\n",
"alley 110 non-null object\n",
"lotshape 1538 non-null object\n",
"landcontour 1538 non-null object\n",
"utilities 1538 non-null object\n",
"lotconfig 1538 non-null object\n",
"landslope 1538 non-null object\n",
"neighborhood 1538 non-null object\n",
"condition1 1538 non-null object\n",
"condition2 1538 non-null object\n",
"bldgtype 1538 non-null object\n",
"housestyle 1538 non-null object\n",
"overallqual 1538 non-null int64\n",
"overallcond 1538 non-null int64\n",
"yearbuilt 1538 non-null int64\n",
"yearremod/add 1538 non-null int64\n",
"roofstyle 1538 non-null object\n",
"roofmatl 1538 non-null object\n",
"exterior1st 1538 non-null object\n",
"exterior2nd 1538 non-null object\n",
"masvnrtype 1521 non-null object\n",
"masvnrarea 1538 non-null float64\n",
"exterqual 1538 non-null object\n",
"extercond 1538 non-null object\n",
"foundation 1538 non-null object\n",
"bsmtqual 1501 non-null object\n",
"bsmtcond 1501 non-null object\n",
"bsmtexposure 1498 non-null object\n",
"bsmtfintype1 1501 non-null object\n",
"bsmtfinsf1 1538 non-null float64\n",
"bsmtfintype2 1500 non-null object\n",
"bsmtfinsf2 1538 non-null float64\n",
"bsmtunfsf 1538 non-null float64\n",
"totalbsmtsf 1538 non-null float64\n",
"heating 1538 non-null object\n",
"heatingqc 1538 non-null object\n",
"centralair 1538 non-null object\n",
"electrical 1538 non-null object\n",
"1stflrsf 1538 non-null int64\n",
"2ndflrsf 1538 non-null int64\n",
"lowqualfinsf 1538 non-null int64\n",
"grlivarea 1538 non-null int64\n",
"bsmtfullbath 1538 non-null float64\n",
"bsmthalfbath 1538 non-null float64\n",
"fullbath 1538 non-null int64\n",
"halfbath 1538 non-null int64\n",
"bedroomabvgr 1538 non-null int64\n",
"kitchenabvgr 1538 non-null int64\n",
"kitchenqual 1538 non-null object\n",
"totrmsabvgrd 1538 non-null int64\n",
"functional 1538 non-null object\n",
"fireplaces 1538 non-null int64\n",
"fireplacequ 798 non-null object\n",
"garagetype 1449 non-null object\n",
"garageyrblt 1538 non-null float64\n",
"garagefinish 1449 non-null object\n",
"garagecars 1538 non-null float64\n",
"garagearea 1538 non-null float64\n",
"garagequal 1449 non-null object\n",
"garagecond 1449 non-null object\n",
"paveddrive 1538 non-null object\n",
"wooddecksf 1538 non-null int64\n",
"openporchsf 1538 non-null int64\n",
"enclosedporch 1538 non-null int64\n",
"3ssnporch 1538 non-null int64\n",
"screenporch 1538 non-null int64\n",
"poolarea 1538 non-null int64\n",
"poolqc 9 non-null object\n",
"fence 286 non-null object\n",
"miscfeature 50 non-null object\n",
"miscval 1538 non-null int64\n",
"mosold 1538 non-null int64\n",
"yrsold 1538 non-null int64\n",
"saletype 1538 non-null object\n",
"dtypes: float64(11), int64(27), object(42)\n",
"memory usage: 973.3+ KB\n"
]
}
],
"source": [
"X_train.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Breaking dataframes into two where one is all num values and one is all obj values so I can look at them more easily."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"X_tr_obj = X_train.select_dtypes(exclude=[np.number])\n",
"X_tr_num = X_train.select_dtypes(include=[np.number])\n",
"X_ts_obj = X_test.select_dtypes(exclude=[np.number])\n",
"X_ts_num = X_test.select_dtypes(include=[np.number])\n",
"X_full_obj = X_full.select_dtypes(exclude=[np.number])\n",
"X_full_num = X_full.select_dtypes(include=[np.number])\n",
"finaltest_obj = finaltest.select_dtypes(exclude=[np.number])\n",
"finaltest_num = finaltest.select_dtypes(include=[np.number])"
]
},
{
"cell_type": "code",
"execution_count": 42,
"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>id</th>\n",
" <th>pid</th>\n",
" <th>mssubclass</th>\n",
" <th>lotfrontage</th>\n",
" <th>lotarea</th>\n",
" <th>overallqual</th>\n",
" <th>overallcond</th>\n",
" <th>yearbuilt</th>\n",
" <th>yearremod/add</th>\n",
" <th>masvnrarea</th>\n",
" <th>...</th>\n",
" <th>wooddecksf</th>\n",
" <th>openporchsf</th>\n",
" <th>enclosedporch</th>\n",
" <th>3ssnporch</th>\n",
" <th>screenporch</th>\n",
" <th>poolarea</th>\n",
" <th>poolqc</th>\n",
" <th>miscval</th>\n",
" <th>mosold</th>\n",
" <th>yrsold</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>908</th>\n",
" <td>2559</td>\n",
" <td>534455080</td>\n",
" <td>20</td>\n",
" <td>80.0</td>\n",
" <td>9600</td>\n",
" <td>5</td>\n",
" <td>6</td>\n",
" <td>1961</td>\n",
" <td>1990</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>144</td>\n",
" <td>0</td>\n",
" <td>205</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>2006</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1619</th>\n",
" <td>1947</td>\n",
" <td>535375130</td>\n",
" <td>50</td>\n",
" <td>60.0</td>\n",
" <td>10134</td>\n",
" <td>5</td>\n",
" <td>6</td>\n",
" <td>1940</td>\n",
" <td>1950</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>39</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>2007</td>\n",
" </tr>\n",
" <tr>\n",
" <th>391</th>\n",
" <td>81</td>\n",
" <td>531453010</td>\n",
" <td>20</td>\n",
" <td>81.0</td>\n",
" <td>9672</td>\n",
" <td>6</td>\n",
" <td>5</td>\n",
" <td>1984</td>\n",
" <td>1985</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>2010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>861</th>\n",
" <td>2573</td>\n",
" <td>535151130</td>\n",
" <td>90</td>\n",
" <td>70.0</td>\n",
" <td>7728</td>\n",
" <td>5</td>\n",
" <td>6</td>\n",
" <td>1962</td>\n",
" <td>1962</td>\n",
" <td>120.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>2006</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1270</th>\n",
" <td>1569</td>\n",
" <td>914476080</td>\n",
" <td>90</td>\n",
" <td>76.0</td>\n",
" <td>10260</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>1976</td>\n",
" <td>1976</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>2008</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 39 columns</p>\n",
"</div>"
],
"text/plain": [
" id pid mssubclass lotfrontage lotarea overallqual \\\n",
"908 2559 534455080 20 80.0 9600 5 \n",
"1619 1947 535375130 50 60.0 10134 5 \n",
"391 81 531453010 20 81.0 9672 6 \n",
"861 2573 535151130 90 70.0 7728 5 \n",
"1270 1569 914476080 90 76.0 10260 5 \n",
"\n",
" overallcond yearbuilt yearremod/add masvnrarea ... wooddecksf \\\n",
"908 6 1961 1990 0.0 ... 144 \n",
"1619 6 1940 1950 0.0 ... 0 \n",
"391 5 1984 1985 0.0 ... 0 \n",
"861 6 1962 1962 120.0 ... 0 \n",
"1270 4 1976 1976 0.0 ... 0 \n",
"\n",
" openporchsf enclosedporch 3ssnporch screenporch poolarea poolqc \\\n",
"908 0 205 0 0 0 NaN \n",
"1619 39 0 0 0 0 NaN \n",
"391 0 0 0 0 0 NaN \n",
"861 18 0 0 0 0 NaN \n",
"1270 0 0 0 0 0 NaN \n",
"\n",
" miscval mosold yrsold \n",
"908 0 6 2006 \n",
"1619 0 7 2007 \n",
"391 0 5 2010 \n",
"861 0 5 2006 \n",
"1270 0 11 2008 \n",
"\n",
"[5 rows x 39 columns]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_ts_num.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Checking to make sure it worked. "
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1538, 80)\n",
"(1538, 42)\n",
"(1538, 38)\n"
]
}
],
"source": [
"print(X_train.shape)\n",
"print(X_tr_obj.shape)\n",
"print(X_tr_num.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check for potential outliers."
]
},
{
"cell_type": "code",
"execution_count": 44,
"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>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>id</th>\n",
" <td>1538.0</td>\n",
" <td>1.469118e+03</td>\n",
" <td>8.442267e+02</td>\n",
" <td>1.0</td>\n",
" <td>7.465000e+02</td>\n",
" <td>1.496500e+03</td>\n",
" <td>2.174750e+03</td>\n",
" <td>2930.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>pid</th>\n",
" <td>1538.0</td>\n",
" <td>7.148299e+08</td>\n",
" <td>1.887552e+08</td>\n",
" <td>526301100.0</td>\n",
" <td>5.284567e+08</td>\n",
" <td>5.354546e+08</td>\n",
" <td>9.071855e+08</td>\n",
" <td>924152030.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mssubclass</th>\n",
" <td>1538.0</td>\n",
" <td>5.754226e+01</td>\n",
" <td>4.335184e+01</td>\n",
" <td>20.0</td>\n",
" <td>2.000000e+01</td>\n",
" <td>5.000000e+01</td>\n",
" <td>7.000000e+01</td>\n",
" <td>190.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>lotfrontage</th>\n",
" <td>1538.0</td>\n",
" <td>6.954096e+01</td>\n",
" <td>2.108364e+01</td>\n",
" <td>21.0</td>\n",
" <td>6.000000e+01</td>\n",
" <td>6.954096e+01</td>\n",
" <td>7.900000e+01</td>\n",
" <td>313.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>lotarea</th>\n",
" <td>1538.0</td>\n",
" <td>1.017908e+04</td>\n",
" <td>7.353026e+03</td>\n",
" <td>1300.0</td>\n",
" <td>7.455500e+03</td>\n",
" <td>9.465000e+03</td>\n",
" <td>1.163550e+04</td>\n",
" <td>159000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>overallqual</th>\n",
" <td>1538.0</td>\n",
" <td>6.109883e+00</td>\n",
" <td>1.405082e+00</td>\n",
" <td>1.0</td>\n",
" <td>5.000000e+00</td>\n",
" <td>6.000000e+00</td>\n",
" <td>7.000000e+00</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>overallcond</th>\n",
" <td>1538.0</td>\n",
" <td>5.571521e+00</td>\n",
" <td>1.110848e+00</td>\n",
" <td>1.0</td>\n",
" <td>5.000000e+00</td>\n",
" <td>5.000000e+00</td>\n",
" <td>6.000000e+00</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>yearbuilt</th>\n",
" <td>1538.0</td>\n",
" <td>1.971674e+03</td>\n",
" <td>3.025887e+01</td>\n",
" <td>1879.0</td>\n",
" <td>1.953000e+03</td>\n",
" <td>1.975000e+03</td>\n",
" <td>2.001000e+03</td>\n",
" <td>2010.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>yearremod/add</th>\n",
" <td>1538.0</td>\n",
" <td>1.984081e+03</td>\n",
" <td>2.120002e+01</td>\n",
" <td>1950.0</td>\n",
" <td>1.964000e+03</td>\n",
" <td>1.993000e+03</td>\n",
" <td>2.004000e+03</td>\n",
" <td>2010.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>masvnrarea</th>\n",
" <td>1538.0</td>\n",
" <td>9.911308e+01</td>\n",
" <td>1.731902e+02</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.600000e+02</td>\n",
" <td>1600.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bsmtfinsf1</th>\n",
" <td>1538.0</td>\n",
" <td>4.402523e+02</td>\n",
" <td>4.704420e+02</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>3.610000e+02</td>\n",
" <td>7.287500e+02</td>\n",
" <td>5644.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bsmtfinsf2</th>\n",
" <td>1538.0</td>\n",
" <td>4.791873e+01</td>\n",
" <td>1.636097e+02</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1474.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bsmtunfsf</th>\n",
" <td>1538.0</td>\n",
" <td>5.709402e+02</td>\n",
" <td>4.445010e+02</td>\n",
" <td>0.0</td>\n",
" <td>2.222500e+02</td>\n",
" <td>4.800000e+02</td>\n",
" <td>8.150000e+02</td>\n",
" <td>2336.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>totalbsmtsf</th>\n",
" <td>1538.0</td>\n",
" <td>1.059111e+03</td>\n",
" <td>4.524990e+02</td>\n",
" <td>0.0</td>\n",
" <td>7.895000e+02</td>\n",
" <td>9.945000e+02</td>\n",
" <td>1.324000e+03</td>\n",
" <td>6110.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1stflrsf</th>\n",
" <td>1538.0</td>\n",
" <td>1.165298e+03</td>\n",
" <td>4.039276e+02</td>\n",
" <td>334.0</td>\n",
" <td>8.782500e+02</td>\n",
" <td>1.092500e+03</td>\n",
" <td>1.408500e+03</td>\n",
" <td>5095.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2ndflrsf</th>\n",
" <td>1538.0</td>\n",
" <td>3.328362e+02</td>\n",
" <td>4.238517e+02</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>6.995000e+02</td>\n",
" <td>1836.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>lowqualfinsf</th>\n",
" <td>1538.0</td>\n",
" <td>5.667100e+00</td>\n",
" <td>5.337538e+01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1064.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>grlivarea</th>\n",
" <td>1538.0</td>\n",
" <td>1.503801e+03</td>\n",
" <td>5.047836e+02</td>\n",
" <td>334.0</td>\n",
" <td>1.143000e+03</td>\n",
" <td>1.452000e+03</td>\n",
" <td>1.724000e+03</td>\n",
" <td>5642.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bsmtfullbath</th>\n",
" <td>1538.0</td>\n",
" <td>4.307092e-01</td>\n",
" <td>5.182866e-01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bsmthalfbath</th>\n",
" <td>1538.0</td>\n",
" <td>6.115810e-02</td>\n",
" <td>2.476318e-01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fullbath</th>\n",
" <td>1538.0</td>\n",
" <td>1.583225e+00</td>\n",
" <td>5.445938e-01</td>\n",
" <td>0.0</td>\n",
" <td>1.000000e+00</td>\n",
" <td>2.000000e+00</td>\n",
" <td>2.000000e+00</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>halfbath</th>\n",
" <td>1538.0</td>\n",
" <td>3.719116e-01</td>\n",
" <td>4.993598e-01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bedroomabvgr</th>\n",
" <td>1538.0</td>\n",
" <td>2.843953e+00</td>\n",
" <td>8.124554e-01</td>\n",
" <td>0.0</td>\n",
" <td>2.000000e+00</td>\n",
" <td>3.000000e+00</td>\n",
" <td>3.000000e+00</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>kitchenabvgr</th>\n",
" <td>1538.0</td>\n",
" <td>1.041612e+00</td>\n",
" <td>2.093097e-01</td>\n",
" <td>0.0</td>\n",
" <td>1.000000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>totrmsabvgrd</th>\n",
" <td>1538.0</td>\n",
" <td>6.445384e+00</td>\n",
" <td>1.545643e+00</td>\n",
" <td>2.0</td>\n",
" <td>5.000000e+00</td>\n",
" <td>6.000000e+00</td>\n",
" <td>7.000000e+00</td>\n",
" <td>15.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fireplaces</th>\n",
" <td>1538.0</td>\n",
" <td>6.046814e-01</td>\n",
" <td>6.481274e-01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>garageyrblt</th>\n",
" <td>1538.0</td>\n",
" <td>1.978795e+03</td>\n",
" <td>2.501178e+01</td>\n",
" <td>1895.0</td>\n",
" <td>1.962000e+03</td>\n",
" <td>1.978795e+03</td>\n",
" <td>2.001000e+03</td>\n",
" <td>2207.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>garagecars</th>\n",
" <td>1538.0</td>\n",
" <td>1.774382e+00</td>\n",
" <td>7.672165e-01</td>\n",
" <td>0.0</td>\n",
" <td>1.000000e+00</td>\n",
" <td>2.000000e+00</td>\n",
" <td>2.000000e+00</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>garagearea</th>\n",
" <td>1538.0</td>\n",
" <td>4.714246e+02</td>\n",
" <td>2.163963e+02</td>\n",
" <td>0.0</td>\n",
" <td>3.162500e+02</td>\n",
" <td>4.800000e+02</td>\n",
" <td>5.760000e+02</td>\n",
" <td>1418.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wooddecksf</th>\n",
" <td>1538.0</td>\n",
" <td>9.520741e+01</td>\n",
" <td>1.324116e+02</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.680000e+02</td>\n",
" <td>1424.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>openporchsf</th>\n",
" <td>1538.0</td>\n",
" <td>4.925618e+01</td>\n",
" <td>6.924440e+01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>2.800000e+01</td>\n",
" <td>7.200000e+01</td>\n",
" <td>547.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>enclosedporch</th>\n",
" <td>1538.0</td>\n",
" <td>2.301886e+01</td>\n",
" <td>6.003742e+01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>432.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3ssnporch</th>\n",
" <td>1538.0</td>\n",
" <td>2.914174e+00</td>\n",
" <td>2.777646e+01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>508.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>screenporch</th>\n",
" <td>1538.0</td>\n",
" <td>1.720026e+01</td>\n",
" <td>5.957139e+01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>490.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>poolarea</th>\n",
" <td>1538.0</td>\n",
" <td>3.197659e+00</td>\n",
" <td>4.360531e+01</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>800.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>miscval</th>\n",
" <td>1538.0</td>\n",
" <td>5.528283e+01</td>\n",
" <td>6.173629e+02</td>\n",
" <td>0.0</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>17000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mosold</th>\n",
" <td>1538.0</td>\n",
" <td>6.195709e+00</td>\n",
" <td>2.753136e+00</td>\n",
" <td>1.0</td>\n",
" <td>4.000000e+00</td>\n",
" <td>6.000000e+00</td>\n",
" <td>8.000000e+00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>yrsold</th>\n",
" <td>1538.0</td>\n",
" <td>2.007785e+03</td>\n",
" <td>1.313997e+00</td>\n",
" <td>2006.0</td>\n",
" <td>2.007000e+03</td>\n",
" <td>2.008000e+03</td>\n",
" <td>2.009000e+03</td>\n",
" <td>2010.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count mean std min 25% \\\n",
"id 1538.0 1.469118e+03 8.442267e+02 1.0 7.465000e+02 \n",
"pid 1538.0 7.148299e+08 1.887552e+08 526301100.0 5.284567e+08 \n",
"mssubclass 1538.0 5.754226e+01 4.335184e+01 20.0 2.000000e+01 \n",
"lotfrontage 1538.0 6.954096e+01 2.108364e+01 21.0 6.000000e+01 \n",
"lotarea 1538.0 1.017908e+04 7.353026e+03 1300.0 7.455500e+03 \n",
"overallqual 1538.0 6.109883e+00 1.405082e+00 1.0 5.000000e+00 \n",
"overallcond 1538.0 5.571521e+00 1.110848e+00 1.0 5.000000e+00 \n",
"yearbuilt 1538.0 1.971674e+03 3.025887e+01 1879.0 1.953000e+03 \n",
"yearremod/add 1538.0 1.984081e+03 2.120002e+01 1950.0 1.964000e+03 \n",
"masvnrarea 1538.0 9.911308e+01 1.731902e+02 0.0 0.000000e+00 \n",
"bsmtfinsf1 1538.0 4.402523e+02 4.704420e+02 0.0 0.000000e+00 \n",
"bsmtfinsf2 1538.0 4.791873e+01 1.636097e+02 0.0 0.000000e+00 \n",
"bsmtunfsf 1538.0 5.709402e+02 4.445010e+02 0.0 2.222500e+02 \n",
"totalbsmtsf 1538.0 1.059111e+03 4.524990e+02 0.0 7.895000e+02 \n",
"1stflrsf 1538.0 1.165298e+03 4.039276e+02 334.0 8.782500e+02 \n",
"2ndflrsf 1538.0 3.328362e+02 4.238517e+02 0.0 0.000000e+00 \n",
"lowqualfinsf 1538.0 5.667100e+00 5.337538e+01 0.0 0.000000e+00 \n",
"grlivarea 1538.0 1.503801e+03 5.047836e+02 334.0 1.143000e+03 \n",
"bsmtfullbath 1538.0 4.307092e-01 5.182866e-01 0.0 0.000000e+00 \n",
"bsmthalfbath 1538.0 6.115810e-02 2.476318e-01 0.0 0.000000e+00 \n",
"fullbath 1538.0 1.583225e+00 5.445938e-01 0.0 1.000000e+00 \n",
"halfbath 1538.0 3.719116e-01 4.993598e-01 0.0 0.000000e+00 \n",
"bedroomabvgr 1538.0 2.843953e+00 8.124554e-01 0.0 2.000000e+00 \n",
"kitchenabvgr 1538.0 1.041612e+00 2.093097e-01 0.0 1.000000e+00 \n",
"totrmsabvgrd 1538.0 6.445384e+00 1.545643e+00 2.0 5.000000e+00 \n",
"fireplaces 1538.0 6.046814e-01 6.481274e-01 0.0 0.000000e+00 \n",
"garageyrblt 1538.0 1.978795e+03 2.501178e+01 1895.0 1.962000e+03 \n",
"garagecars 1538.0 1.774382e+00 7.672165e-01 0.0 1.000000e+00 \n",
"garagearea 1538.0 4.714246e+02 2.163963e+02 0.0 3.162500e+02 \n",
"wooddecksf 1538.0 9.520741e+01 1.324116e+02 0.0 0.000000e+00 \n",
"openporchsf 1538.0 4.925618e+01 6.924440e+01 0.0 0.000000e+00 \n",
"enclosedporch 1538.0 2.301886e+01 6.003742e+01 0.0 0.000000e+00 \n",
"3ssnporch 1538.0 2.914174e+00 2.777646e+01 0.0 0.000000e+00 \n",
"screenporch 1538.0 1.720026e+01 5.957139e+01 0.0 0.000000e+00 \n",
"poolarea 1538.0 3.197659e+00 4.360531e+01 0.0 0.000000e+00 \n",
"miscval 1538.0 5.528283e+01 6.173629e+02 0.0 0.000000e+00 \n",
"mosold 1538.0 6.195709e+00 2.753136e+00 1.0 4.000000e+00 \n",
"yrsold 1538.0 2.007785e+03 1.313997e+00 2006.0 2.007000e+03 \n",
"\n",
" 50% 75% max \n",
"id 1.496500e+03 2.174750e+03 2930.0 \n",
"pid 5.354546e+08 9.071855e+08 924152030.0 \n",
"mssubclass 5.000000e+01 7.000000e+01 190.0 \n",
"lotfrontage 6.954096e+01 7.900000e+01 313.0 \n",
"lotarea 9.465000e+03 1.163550e+04 159000.0 \n",
"overallqual 6.000000e+00 7.000000e+00 10.0 \n",
"overallcond 5.000000e+00 6.000000e+00 9.0 \n",
"yearbuilt 1.975000e+03 2.001000e+03 2010.0 \n",
"yearremod/add 1.993000e+03 2.004000e+03 2010.0 \n",
"masvnrarea 0.000000e+00 1.600000e+02 1600.0 \n",
"bsmtfinsf1 3.610000e+02 7.287500e+02 5644.0 \n",
"bsmtfinsf2 0.000000e+00 0.000000e+00 1474.0 \n",
"bsmtunfsf 4.800000e+02 8.150000e+02 2336.0 \n",
"totalbsmtsf 9.945000e+02 1.324000e+03 6110.0 \n",
"1stflrsf 1.092500e+03 1.408500e+03 5095.0 \n",
"2ndflrsf 0.000000e+00 6.995000e+02 1836.0 \n",
"lowqualfinsf 0.000000e+00 0.000000e+00 1064.0 \n",
"grlivarea 1.452000e+03 1.724000e+03 5642.0 \n",
"bsmtfullbath 0.000000e+00 1.000000e+00 2.0 \n",
"bsmthalfbath 0.000000e+00 0.000000e+00 2.0 \n",
"fullbath 2.000000e+00 2.000000e+00 4.0 \n",
"halfbath 0.000000e+00 1.000000e+00 2.0 \n",
"bedroomabvgr 3.000000e+00 3.000000e+00 8.0 \n",
"kitchenabvgr 1.000000e+00 1.000000e+00 3.0 \n",
"totrmsabvgrd 6.000000e+00 7.000000e+00 15.0 \n",
"fireplaces 1.000000e+00 1.000000e+00 4.0 \n",
"garageyrblt 1.978795e+03 2.001000e+03 2207.0 \n",
"garagecars 2.000000e+00 2.000000e+00 4.0 \n",
"garagearea 4.800000e+02 5.760000e+02 1418.0 \n",
"wooddecksf 0.000000e+00 1.680000e+02 1424.0 \n",
"openporchsf 2.800000e+01 7.200000e+01 547.0 \n",
"enclosedporch 0.000000e+00 0.000000e+00 432.0 \n",
"3ssnporch 0.000000e+00 0.000000e+00 508.0 \n",
"screenporch 0.000000e+00 0.000000e+00 490.0 \n",
"poolarea 0.000000e+00 0.000000e+00 800.0 \n",
"miscval 0.000000e+00 0.000000e+00 17000.0 \n",
"mosold 6.000000e+00 8.000000e+00 12.0 \n",
"yrsold 2.008000e+03 2.009000e+03 2010.0 "
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_tr_num.describe().T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Obviously, some of the maxes are large, but that's the way real estate works. Otherwise, nothing here pops out as being wroong. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Okay, now that we have separated our dataframe into a numerical one and a categorical one, let's take a look-see at the numerical correlations."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"X_tr_num['sp']=y_train"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"id 0.046963\n",
"pid 0.243312\n",
"mssubclass 0.104183\n",
"lotfrontage 0.320966\n",
"lotarea 0.301233\n",
"overallqual 0.787963\n",
"overallcond 0.094205\n",
"yearbuilt 0.560274\n",
"yearremod/add 0.531071\n",
"masvnrarea 0.503817\n",
"bsmtfinsf1 0.423380\n",
"bsmtfinsf2 0.010237\n",
"bsmtunfsf 0.180959\n",
"totalbsmtsf 0.621630\n",
"1stflrsf 0.616752\n",
"2ndflrsf 0.244477\n",
"lowqualfinsf 0.031802\n",
"grlivarea 0.695442\n",
"bsmtfullbath 0.279659\n",
"bsmthalfbath 0.036105\n",
"fullbath 0.541253\n",
"halfbath 0.296527\n",
"bedroomabvgr 0.150723\n",
"kitchenabvgr 0.131280\n",
"totrmsabvgrd 0.495609\n",
"fireplaces 0.467371\n",
"garageyrblt 0.499246\n",
"garagecars 0.646358\n",
"garagearea 0.654564\n",
"wooddecksf 0.322195\n",
"openporchsf 0.326194\n",
"enclosedporch 0.113088\n",
"3ssnporch 0.062105\n",
"screenporch 0.128890\n",
"poolarea 0.026498\n",
"miscval 0.013014\n",
"mosold 0.026836\n",
"yrsold 0.014487\n",
"sp 1.000000\n",
"Name: sp, dtype: float64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"abs(X_tr_num.corr().sp)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For this first model, we're going to choose all the columns where the correlation coefficient with SalePrice is greater than or equal to some value I determine."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"['overallqual',\n",
" 'grlivarea',\n",
" 'garagearea',\n",
" 'garagecars',\n",
" 'totalbsmtsf',\n",
" '1stflrsf',\n",
" 'yearbuilt',\n",
" 'fullbath',\n",
" 'yearremod/add',\n",
" 'masvnrarea',\n",
" 'garageyrblt',\n",
" 'totrmsabvgrd',\n",
" 'fireplaces',\n",
" 'bsmtfinsf1',\n",
" 'openporchsf',\n",
" 'wooddecksf',\n",
" 'lotfrontage',\n",
" 'lotarea']"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vals = abs(X_tr_num.corr().sp).drop('sp').sort_values(ascending=False)\n",
"corr_cols = list(vals[vals >= 0.3].index)\n",
"\n",
"X_tr_mod1 = X_tr_num[corr_cols]\n",
"X_ts_mod1 = X_ts_num[corr_cols]\n",
"X_full_mod1 = X_full_num[corr_cols]\n",
"finaltest_num = finaltest_num[corr_cols]\n",
"\n",
"corr_cols"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, let's just notice that garageyrblt, yearbuilt should be correlated, as well as garagearea, garagecars, as well as totalbsmtsf, masvnrarea, grlivarea, 1stflrsf. So let's make some interaction variables. "
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import PolynomialFeatures\n",
"pf = PolynomialFeatures(degree=2, interaction_only=False, \n",
" include_bias=True)\n",
"pf.fit(X_tr_mod1)\n",
"X_tr_mod1 = pf.transform(X_tr_mod1)\n",
"X_ts_mod1 = pf.transform(X_ts_mod1)\n",
"X_full_mod1 = pf.transform(X_full_mod1)\n",
"finaltest_num = pf.transform(finaltest_num)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Okay, now let's use a standard scalar to make everything line up nicely. "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"ss = StandardScaler()\n",
"X_tr_mod1 = ss.fit_transform(X_tr_mod1)\n",
"X_ts_mod1 = ss.transform(X_ts_mod1)\n",
"X_full_mod1 = ss.fit_transform(X_full_mod1)\n",
"finaltest_num = ss.transform(finaltest_num)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So, for lasso, ridge, and enet, I played with different alpha ranges, different numbers of iterations, and also different correlation thresholds. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's try a lasso!"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"l_alphas = np.arange(.001, .15, .0025)\n",
"lasso_model = LassoCV(alphas=l_alphas, max_iter=2000, cv=5)\n",
"# lasso_model = LassoCV(max_iter=10000, cv=5)\n",
"\n",
"model_1 = lasso_model.fit(X_tr_mod1, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great, let's score the lasso."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.8775294669615423\n"
]
}
],
"source": [
"print(model_1.score(X_ts_mod1, y_test))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hey, that's not a bad score at all! What if we tried ridge? "
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RidgeCV(alphas=array([1.00000e+00, 1.05956e+00, ..., 9.43788e+04, 1.00000e+05]),\n",
" cv=10, fit_intercept=True, gcv_mode=None, normalize=False,\n",
" scoring=None, store_cv_values=False)"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ridge_alphas = np.logspace(0, 5, 200)\n",
"\n",
"ridge_model = RidgeCV(alphas=ridge_alphas, cv=10)\n",
"# ridge_model = RidgeCV(cv=10)\n",
"ridge_model.fit(X_tr_mod1, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.41482135 0.92429854 0.93223297 0.87297726 0.96470258 0.92663356\n",
" 0.86130404 0.90217608 0.76066959 0.89760725 0.88741725 0.9228639\n",
" 0.79991588 0.71831878 0.93233873]\n",
"0.8478851837319284\n"
]
}
],
"source": [
"ridge = Ridge(alpha=ridge_model.alpha_)\n",
"\n",
"ridge_scores = cross_val_score(ridge, X_ts_mod1, y_test, cv=15)\n",
"\n",
"print(ridge_scores)\n",
"print(np.mean(ridge_scores))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hmmm. And last, everyone's favorite, the elastic net. "
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"161.32818304593434\n",
"1.0\n"
]
}
],
"source": [
"l1_ratios = np.linspace(0.01, 1.0, 25)\n",
"\n",
"enet = ElasticNetCV(l1_ratio=l1_ratios, n_alphas=100, cv=10,\n",
" verbose=0)\n",
"# enet = ElasticNetCV(cv=10, verbose=0)\n",
"enet.fit(X_tr_mod1, y_train)\n",
"\n",
"print(enet.alpha_)\n",
"print(enet.l1_ratio_)\n"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.55454395 0.94231695 0.90016697 0.95585052 0.88206291 0.76624644\n",
" 0.90431674 0.94806442 0.8154628 0.90050468]\n",
"0.8569536375192447\n"
]
}
],
"source": [
"enet = ElasticNet(alpha=enet.alpha_, l1_ratio=enet.l1_ratio_)\n",
"\n",
"enet_scores = cross_val_score(enet, X_ts_mod1, y_test, cv=10)\n",
"\n",
"print(enet_scores)\n",
"print(np.mean(enet_scores))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's basically the same. But I have discovered that as I decreased my cut off for correlation, my lasso score remained largely the same, but my ridge and enet scores went up a tiny bit, culminating with my pulling an R-squared on .89 from Elastic Net. "
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# l_alphas = np.arange(.001, .15, .0025)\n",
"# lasso_model_final = LassoCV(alphas=l_alphas, cv=5)\n",
"# model_1_final = lasso_model.fit(X_full_mod1, y)\n",
"\n",
"enet = ElasticNetCV(l1_ratio=l1_ratios, n_alphas=100, cv=10,\n",
" verbose=0)\n",
"model_1_final = enet.fit(X_full_mod1, y)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is how I send my model's predictions to a file."
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"evansubmission1 = pd.DataFrame(data = model_1_final.predict(finaltest_num), columns = ['SalePrice'], index=finaltest['id'])\n",
"evansubmission1.to_csv('./evansubmission1.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotting my test predictions vs. my test y for a nice visualization of the efficacy of my model. "
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"image/png": {
"height": 479,
"width": 515
}
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"score: 0.855802088154267\n"
]
}
],
"source": [
"predictions = model_1_final.predict(X_ts_mod1)\n",
"y = y_test\n",
"\n",
"# Plot the model\n",
"plt.figure(figsize=(8,8))\n",
"plt.scatter(predictions, y, s=30, c='g', marker='*', zorder=10)\n",
"plt.xlabel(\"Predicted Values of Price From My Horrible Model\")\n",
"plt.ylabel(\"Actual Values of Price\")\n",
"\n",
"plt.plot([0, np.max(y)], [0, np.max(y)], c = 'k')\n",
"\n",
"plt.show()\n",
"score = cross_val_score(model_1_final, X_ts_mod1, y_test, cv=10)\n",
"print(\"score: \", score.mean())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And that's it for the first model! Don't forget to look at the other two model files by checking out the GitHub [repository](https://github.com/esjacobs/Predicting-Ames-Housing-Prices). I've included the data dictionary below. "
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# evansubmission1 = pd.DataFrame(data = model_1.predict(X_ts_mod1), columns = ['SalePrice'], index=y_test['Id'])\n",
"# evansubmission1.to_csv('./evansubmission1.csv')"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"# There are three files:\n",
"\n",
"# train.csv -- this data contains all of the training data for your model.\n",
"# The target variable (SalePrice) is removed from the test set!\n",
"# test.csv -- this data contains the test data for your model. You will feed this data into your regression model to make predictions.\n",
"# sample_sub_reg.csv -- An example of a correctly formatted submission for this challenge (with a random number provided as predictions for SalePrice. Please ensure that your submission to Kaggle matches this format.\n",
"# Codebook / Data Dictionary:\n",
"\n",
"# SalePrice - the property's sale price in dollars. This is the target variable that you're trying to predict for this challenge.\n",
"# MSSubClass: The building class\n",
"# 20 1-STORY 1946 & NEWER ALL STYLES\n",
"# 30 1-STORY 1945 & OLDER\n",
"# 40 1-STORY W/FINISHED ATTIC ALL AGES\n",
"# 45 1-1/2 STORY - UNFINISHED ALL AGES\n",
"# 50 1-1/2 STORY FINISHED ALL AGES\n",
"# 60 2-STORY 1946 & NEWER\n",
"# 70 2-STORY 1945 & OLDER\n",
"# 75 2-1/2 STORY ALL AGES\n",
"# 80 SPLIT OR MULTI-LEVEL\n",
"# 85 SPLIT FOYER\n",
"# 90 DUPLEX - ALL STYLES AND AGES\n",
"# 120 1-STORY PUD (Planned Unit Development) - 1946 & NEWER\n",
"# 150 1-1/2 STORY PUD - ALL AGES\n",
"# 160 2-STORY PUD - 1946 & NEWER\n",
"# 180 PUD - MULTILEVEL - INCL SPLIT LEV/FOYER\n",
"# 190 2 FAMILY CONVERSION - ALL STYLES AND AGES\n",
"# MSZoning: Identifies the general zoning classification of the sale.\n",
"# A Agriculture\n",
"# C Commercial\n",
"# FV Floating Village Residential\n",
"# I Industrial\n",
"# RH Residential High Density\n",
"# RL Residential Low Density\n",
"# RP Residential Low Density Park\n",
"# RM Residential Medium Density\n",
"# LotFrontage: Linear feet of street connected to property\n",
"# LotArea: Lot size in square feet\n",
"# Street: Type of road access to property\n",
"# Grvl Gravel\n",
"# Pave Paved\n",
"# Alley: Type of alley access to property\n",
"# Grvl Gravel\n",
"# Pave Paved\n",
"# NA No alley access\n",
"# LotShape: General shape of property\n",
"# Reg Regular\n",
"# IR1 Slightly irregular\n",
"# IR2 Moderately Irregular\n",
"# IR3 Irregular\n",
"# LandContour: Flatness of the property\n",
"# Lvl Near Flat/Level\n",
"# Bnk Banked - Quick and significant rise from street grade to building\n",
"# HLS Hillside - Significant slope from side to side\n",
"# Low Depression\n",
"# Utilities: Type of utilities available\n",
"# AllPub All public Utilities (E,G,W,& S)\n",
"# NoSewr Electricity, Gas, and Water (Septic Tank)\n",
"# NoSeWa Electricity and Gas Only\n",
"# ELO Electricity only\n",
"# LotConfig: Lot configuration\n",
"# Inside Inside lot\n",
"# Corner Corner lot\n",
"# CulDSac Cul-de-sac\n",
"# FR2 Frontage on 2 sides of property\n",
"# FR3 Frontage on 3 sides of property\n",
"# LandSlope: Slope of property\n",
"# Gtl Gentle slope\n",
"# Mod Moderate Slope\n",
"# Sev Severe Slope\n",
"# Neighborhood: Physical locations within Ames city limits\n",
"# Blmngtn Bloomington Heights\n",
"# Blueste Bluestem\n",
"# BrDale Briardale\n",
"# BrkSide Brookside\n",
"# ClearCr Clear Creek\n",
"# CollgCr College Creek\n",
"# Crawfor Crawford\n",
"# Edwards Edwards\n",
"# Gilbert Gilbert\n",
"# IDOTRR Iowa DOT and Rail Road\n",
"# MeadowV Meadow Village\n",
"# Mitchel Mitchell\n",
"# Names North Ames\n",
"# NoRidge Northridge\n",
"# NPkVill Northpark Villa\n",
"# NridgHt Northridge Heights\n",
"# NWAmes Northwest Ames\n",
"# OldTown Old Town\n",
"# SWISU South & West of Iowa State University\n",
"# Sawyer Sawyer\n",
"# SawyerW Sawyer West\n",
"# Somerst Somerset\n",
"# StoneBr Stone Brook\n",
"# Timber Timberland\n",
"# Veenker Veenker\n",
"# Condition1: Proximity to main road or railroad\n",
"# Artery Adjacent to arterial street\n",
"# Feedr Adjacent to feeder street\n",
"# Norm Normal\n",
"# RRNn Within 200' of North-South Railroad\n",
"# RRAn Adjacent to North-South Railroad\n",
"# PosN Near positive off-site feature--park, greenbelt, etc.\n",
"# PosA Adjacent to postive off-site feature\n",
"# RRNe Within 200' of East-West Railroad\n",
"# RRAe Adjacent to East-West Railroad\n",
"# Condition2: Proximity to main road or railroad (if a second is present)\n",
"# Artery Adjacent to arterial street\n",
"# Feedr Adjacent to feeder street\n",
"# Norm Normal\n",
"# RRNn Within 200' of North-South Railroad\n",
"# RRAn Adjacent to North-South Railroad\n",
"# PosN Near positive off-site feature--park, greenbelt, etc.\n",
"# PosA Adjacent to postive off-site feature\n",
"# RRNe Within 200' of East-West Railroad\n",
"# RRAe Adjacent to East-West Railroad\n",
"# BldgType: Type of dwelling\n",
"# 1Fam Single-family Detached\n",
"# 2FmCon Two-family Conversion; originally built as one-family dwelling\n",
"# Duplx Duplex\n",
"# TwnhsE Townhouse End Unit\n",
"# TwnhsI Townhouse Inside Unit\n",
"# HouseStyle: Style of dwelling\n",
"# 1Story One story\n",
"# 1.5Fin One and one-half story: 2nd level finished\n",
"# 1.5Unf One and one-half story: 2nd level unfinished\n",
"# 2Story Two story\n",
"# 2.5Fin Two and one-half story: 2nd level finished\n",
"# 2.5Unf Two and one-half story: 2nd level unfinished\n",
"# SFoyer Split Foyer\n",
"# SLvl Split Level\n",
"# OverallQual: Overall material and finish quality\n",
"# 10 Very Excellent\n",
"# 9 Excellent\n",
"# 8 Very Good\n",
"# 7 Good\n",
"# 6 Above Average\n",
"# 5 Average\n",
"# 4 Below Average\n",
"# 3 Fair\n",
"# 2 Poor\n",
"# 1 Very Poor\n",
"# OverallCond: Overall condition rating\n",
"# 10 Very Excellent\n",
"# 9 Excellent\n",
"# 8 Very Good\n",
"# 7 Good\n",
"# 6 Above Average\n",
"# 5 Average\n",
"# 4 Below Average\n",
"# 3 Fair\n",
"# 2 Poor\n",
"# 1 Very Poor\n",
"# YearBuilt: Original construction date\n",
"# YearRemodAdd: Remodel date (same as construction date if no remodeling or additions)\n",
"# RoofStyle: Type of roof\n",
"# Flat Flat\n",
"# Gable Gable\n",
"# Gambrel Gabrel (Barn)\n",
"# Hip Hip\n",
"# Mansard Mansard\n",
"# Shed Shed\n",
"# RoofMatl: Roof material\n",
"# ClyTile Clay or Tile\n",
"# CompShg Standard (Composite) Shingle\n",
"# Membran Membrane\n",
"# Metal Metal\n",
"# Roll Roll\n",
"# Tar&Grv Gravel & Tar\n",
"# WdShake Wood Shakes\n",
"# WdShngl Wood Shingles\n",
"# Exterior1st: Exterior covering on house\n",
"# AsbShng Asbestos Shingles\n",
"# AsphShn Asphalt Shingles\n",
"# BrkComm Brick Common\n",
"# BrkFace Brick Face\n",
"# CBlock Cinder Block\n",
"# CemntBd Cement Board\n",
"# HdBoard Hard Board\n",
"# ImStucc Imitation Stucco\n",
"# MetalSd Metal Siding\n",
"# Other Other\n",
"# Plywood Plywood\n",
"# PreCast PreCast\n",
"# Stone Stone\n",
"# Stucco Stucco\n",
"# VinylSd Vinyl Siding\n",
"# Wd Sdng Wood Siding\n",
"# WdShing Wood Shingles\n",
"# Exterior2nd: Exterior covering on house (if more than one material)\n",
"# AsbShng Asbestos Shingles\n",
"# AsphShn Asphalt Shingles\n",
"# BrkComm Brick Common\n",
"# BrkFace Brick Face\n",
"# CBlock Cinder Block\n",
"# CemntBd Cement Board\n",
"# HdBoard Hard Board\n",
"# ImStucc Imitation Stucco\n",
"# MetalSd Metal Siding\n",
"# Other Other\n",
"# Plywood Plywood\n",
"# PreCast PreCast\n",
"# Stone Stone\n",
"# Stucco Stucco\n",
"# VinylSd Vinyl Siding\n",
"# Wd Sdng Wood Siding\n",
"# WdShing Wood Shingles\n",
"# MasVnrType: Masonry veneer type\n",
"# BrkCmn Brick Common\n",
"# BrkFace Brick Face\n",
"# CBlock Cinder Block\n",
"# None None\n",
"# Stone Stone\n",
"# MasVnrArea: Masonry veneer area in square feet\n",
"# ExterQual: Exterior material quality\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Average/Typical\n",
"# Fa Fair\n",
"# Po Poor\n",
"# ExterCond: Present condition of the material on the exterior\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Average/Typical\n",
"# Fa Fair\n",
"# Po Poor\n",
"# Foundation: Type of foundation\n",
"# BrkTil Brick & Tile\n",
"# CBlock Cinder Block\n",
"# PConc Poured Contrete\n",
"# Slab Slab\n",
"# Stone Stone\n",
"# Wood Wood\n",
"# BsmtQual: Height of the basement\n",
"# Ex Excellent (100+ inches)\n",
"# Gd Good (90-99 inches)\n",
"# TA Typical (80-89 inches)\n",
"# Fa Fair (70-79 inches)\n",
"# Po Poor (<70 inches)\n",
"# NA No Basement\n",
"# BsmtCond: General condition of the basement\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Typical - slight dampness allowed\n",
"# Fa Fair - dampness or some cracking or settling\n",
"# Po Poor - Severe cracking, settling, or wetness\n",
"# NA No Basement\n",
"# BsmtExposure: Walkout or garden level basement walls\n",
"# Gd Good Exposure\n",
"# Av Average Exposure (split levels or foyers typically score average or above)\n",
"# Mn Mimimum Exposure\n",
"# No No Exposure\n",
"# NA No Basement\n",
"# BsmtFinType1: Quality of basement finished area\n",
"# GLQ Good Living Quarters\n",
"# ALQ Average Living Quarters\n",
"# BLQ Below Average Living Quarters\n",
"# Rec Average Rec Room\n",
"# LwQ Low Quality\n",
"# Unf Unfinshed\n",
"# NA No Basement\n",
"# BsmtFinSF1: Type 1 finished square feet\n",
"# BsmtFinType2: Quality of second finished area (if present)\n",
"# GLQ Good Living Quarters\n",
"# ALQ Average Living Quarters\n",
"# BLQ Below Average Living Quarters\n",
"# Rec Average Rec Room\n",
"# LwQ Low Quality\n",
"# Unf Unfinshed\n",
"# NA No Basement\n",
"# BsmtFinSF2: Type 2 finished square feet\n",
"# BsmtUnfSF: Unfinished square feet of basement area\n",
"# TotalBsmtSF: Total square feet of basement area\n",
"# Heating: Type of heating\n",
"# Floor Floor Furnace\n",
"# GasA Gas forced warm air furnace\n",
"# GasW Gas hot water or steam heat\n",
"# Grav Gravity furnace\n",
"# OthW Hot water or steam heat other than gas\n",
"# Wall Wall furnace\n",
"# HeatingQC: Heating quality and condition\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Average/Typical\n",
"# Fa Fair\n",
"# Po Poor\n",
"# CentralAir: Central air conditioning\n",
"# N No\n",
"# Y Yes\n",
"# Electrical: Electrical system\n",
"# SBrkr Standard Circuit Breakers & Romex\n",
"# FuseA Fuse Box over 60 AMP and all Romex wiring (Average)\n",
"# FuseF 60 AMP Fuse Box and mostly Romex wiring (Fair)\n",
"# FuseP 60 AMP Fuse Box and mostly knob & tube wiring (poor)\n",
"# Mix Mixed\n",
"# 1stFlrSF: First Floor square feet\n",
"# 2ndFlrSF: Second floor square feet\n",
"# LowQualFinSF: Low quality finished square feet (all floors)\n",
"# GrLivArea: Above grade (ground) living area square feet\n",
"# BsmtFullBath: Basement full bathrooms\n",
"# BsmtHalfBath: Basement half bathrooms\n",
"# FullBath: Full bathrooms above grade\n",
"# HalfBath: Half baths above grade\n",
"# Bedroom: Number of bedrooms above basement level\n",
"# Kitchen: Number of kitchens\n",
"# KitchenQual: Kitchen quality\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Typical/Average\n",
"# Fa Fair\n",
"# Po Poor\n",
"# TotRmsAbvGrd: Total rooms above grade (does not include bathrooms)\n",
"# Functional: Home functionality rating\n",
"# Typ Typical Functionality\n",
"# Min1 Minor Deductions 1\n",
"# Min2 Minor Deductions 2\n",
"# Mod Moderate Deductions\n",
"# Maj1 Major Deductions 1\n",
"# Maj2 Major Deductions 2\n",
"# Sev Severely Damaged\n",
"# Sal Salvage only\n",
"# Fireplaces: Number of fireplaces\n",
"# FireplaceQu: Fireplace quality\n",
"# Ex Excellent - Exceptional Masonry Fireplace\n",
"# Gd Good - Masonry Fireplace in main level\n",
"# TA Average - Prefabricated Fireplace in main living area or Masonry Fireplace in basement\n",
"# Fa Fair - Prefabricated Fireplace in basement\n",
"# Po Poor - Ben Franklin Stove\n",
"# NA No Fireplace\n",
"# GarageType: Garage location\n",
"# 2Types More than one type of garage\n",
"# Attchd Attached to home\n",
"# Basment Basement Garage\n",
"# BuiltIn Built-In (Garage part of house - typically has room above garage)\n",
"# CarPort Car Port\n",
"# Detchd Detached from home\n",
"# NA No Garage\n",
"# GarageYrBlt: Year garage was built\n",
"# GarageFinish: Interior finish of the garage\n",
"# Fin Finished\n",
"# RFn Rough Finished\n",
"# Unf Unfinished\n",
"# NA No Garage\n",
"# GarageCars: Size of garage in car capacity\n",
"# GarageArea: Size of garage in square feet\n",
"# GarageQual: Garage quality\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Typical/Average\n",
"# Fa Fair\n",
"# Po Poor\n",
"# NA No Garage\n",
"# GarageCond: Garage condition\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Typical/Average\n",
"# Fa Fair\n",
"# Po Poor\n",
"# NA No Garage\n",
"# PavedDrive: Paved driveway\n",
"# Y Paved\n",
"# P Partial Pavement\n",
"# N Dirt/Gravel\n",
"# WoodDeckSF: Wood deck area in square feet\n",
"# OpenPorchSF: Open porch area in square feet\n",
"# EnclosedPorch: Enclosed porch area in square feet\n",
"# 3SsnPorch: Three season porch area in square feet\n",
"# ScreenPorch: Screen porch area in square feet\n",
"# PoolArea: Pool area in square feet\n",
"# PoolQC: Pool quality\n",
"# Ex Excellent\n",
"# Gd Good\n",
"# TA Average/Typical\n",
"# Fa Fair\n",
"# NA No Pool\n",
"# Fence: Fence quality\n",
"# GdPrv Good Privacy\n",
"# MnPrv Minimum Privacy\n",
"# GdWo Good Wood\n",
"# MnWw Minimum Wood/Wire\n",
"# NA No Fence\n",
"# MiscFeature: Miscellaneous feature not covered in other categories\n",
"# Elev Elevator\n",
"# Gar2 2nd Garage (if not described in garage section)\n",
"# Othr Other\n",
"# Shed Shed (over 100 SF)\n",
"# TenC Tennis Court\n",
"# NA None\n",
"# MiscVal: $Value of miscellaneous feature\n",
"# MoSold: Month Sold\n",
"# YrSold: Year Sold\n",
"# SaleType: Type of sale\n",
"# WD Warranty Deed - Conventional\n",
"# CWD Warranty Deed - Cash\n",
"# VWD Warranty Deed - VA Loan\n",
"# New Home just constructed and sold\n",
"# COD Court Officer Deed/Estate\n",
"# Con Contract 15% Down payment regular terms\n",
"# ConLw Contract Low Down payment and low interest\n",
"# ConLI Contract Low Interest\n",
"# ConLD Contract Low Down\n",
"# Oth Other\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:dsi]",
"language": "python",
"name": "conda-env-dsi-py"
},
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment