Skip to content

Instantly share code, notes, and snippets.

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 jacuzzi-ai/d10c9fe0b6994b09d34abc58b58285cc to your computer and use it in GitHub Desktop.
Save jacuzzi-ai/d10c9fe0b6994b09d34abc58b58285cc to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": " <a href=\"https://www.bigdatauniversity.com\"><img src = \"https://ibm.box.com/shared/static/ugcqz6ohbvff804xp84y4kqnvvk3bq1g.png\" width = 300, align = \"center\"></a>\n\n<h1 align=center><font size = 5>Data Analysis with Python</font></h1>"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# House Sales in King County, USA"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "This dataset contains house sale prices for King County, which includes Seattle. It includes homes sold between May 2014 and May 2015."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<b>id</b> : A notation for a house\n\n<b> date</b>: Date house was sold\n\n\n<b>price</b>: Price is prediction target\n\n\n<b>bedrooms</b>: Number of bedrooms\n\n\n<b>bathrooms</b>: Number of bathrooms\n\n<b>sqft_living</b>: Square footage of the home\n\n<b>sqft_lot</b>: Square footage of the lot\n\n\n<b>floors</b> :Total floors (levels) in house\n\n\n<b>waterfront</b> :House which has a view to a waterfront\n\n\n<b>view</b>: Has been viewed\n\n\n<b>condition</b> :How good the condition is overall\n\n<b>grade</b>: overall grade given to the housing unit, based on King County grading system\n\n\n<b>sqft_above</b> : Square footage of house apart from basement\n\n\n<b>sqft_basement</b>: Square footage of the basement\n\n<b>yr_built</b> : Built Year\n\n\n<b>yr_renovated</b> : Year when house was renovated\n\n<b>zipcode</b>: Zip code\n\n\n<b>lat</b>: Latitude coordinate\n\n<b>long</b>: Longitude coordinate\n\n<b>sqft_living15</b> : Living room area in 2015(implies-- some renovations) This might or might not have affected the lotsize area\n\n\n<b>sqft_lot15</b> : LotSize area in 2015(implies-- some renovations)"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "You will require the following libraries: "
},
{
"metadata": {},
"cell_type": "code",
"source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport seaborn as sns\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import StandardScaler,PolynomialFeatures\nfrom sklearn.linear_model import LinearRegression\n%matplotlib inline",
"execution_count": 1,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Module 1: Importing Data Sets "
},
{
"metadata": {},
"cell_type": "markdown",
"source": " Load the csv: "
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "file_name='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/coursera/project/kc_house_data_NaN.csv'\ndf=pd.read_csv(file_name)",
"execution_count": 2,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "\nWe use the method <code>head</code> to display the first 5 columns of the dataframe."
},
{
"metadata": {},
"cell_type": "code",
"source": "df.head()",
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/plain": " Unnamed: 0 id date price bedrooms bathrooms \\\n0 0 7129300520 20141013T000000 221900.0 3.0 1.00 \n1 1 6414100192 20141209T000000 538000.0 3.0 2.25 \n2 2 5631500400 20150225T000000 180000.0 2.0 1.00 \n3 3 2487200875 20141209T000000 604000.0 4.0 3.00 \n4 4 1954400510 20150218T000000 510000.0 3.0 2.00 \n\n sqft_living sqft_lot floors waterfront ... grade sqft_above \\\n0 1180 5650 1.0 0 ... 7 1180 \n1 2570 7242 2.0 0 ... 7 2170 \n2 770 10000 1.0 0 ... 6 770 \n3 1960 5000 1.0 0 ... 7 1050 \n4 1680 8080 1.0 0 ... 8 1680 \n\n sqft_basement yr_built yr_renovated zipcode lat long \\\n0 0 1955 0 98178 47.5112 -122.257 \n1 400 1951 1991 98125 47.7210 -122.319 \n2 0 1933 0 98028 47.7379 -122.233 \n3 910 1965 0 98136 47.5208 -122.393 \n4 0 1987 0 98074 47.6168 -122.045 \n\n sqft_living15 sqft_lot15 \n0 1340 5650 \n1 1690 7639 \n2 2720 8062 \n3 1360 5000 \n4 1800 7503 \n\n[5 rows x 22 columns]",
"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>Unnamed: 0</th>\n <th>id</th>\n <th>date</th>\n <th>price</th>\n <th>bedrooms</th>\n <th>bathrooms</th>\n <th>sqft_living</th>\n <th>sqft_lot</th>\n <th>floors</th>\n <th>waterfront</th>\n <th>...</th>\n <th>grade</th>\n <th>sqft_above</th>\n <th>sqft_basement</th>\n <th>yr_built</th>\n <th>yr_renovated</th>\n <th>zipcode</th>\n <th>lat</th>\n <th>long</th>\n <th>sqft_living15</th>\n <th>sqft_lot15</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>7129300520</td>\n <td>20141013T000000</td>\n <td>221900.0</td>\n <td>3.0</td>\n <td>1.00</td>\n <td>1180</td>\n <td>5650</td>\n <td>1.0</td>\n <td>0</td>\n <td>...</td>\n <td>7</td>\n <td>1180</td>\n <td>0</td>\n <td>1955</td>\n <td>0</td>\n <td>98178</td>\n <td>47.5112</td>\n <td>-122.257</td>\n <td>1340</td>\n <td>5650</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>6414100192</td>\n <td>20141209T000000</td>\n <td>538000.0</td>\n <td>3.0</td>\n <td>2.25</td>\n <td>2570</td>\n <td>7242</td>\n <td>2.0</td>\n <td>0</td>\n <td>...</td>\n <td>7</td>\n <td>2170</td>\n <td>400</td>\n <td>1951</td>\n <td>1991</td>\n <td>98125</td>\n <td>47.7210</td>\n <td>-122.319</td>\n <td>1690</td>\n <td>7639</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2</td>\n <td>5631500400</td>\n <td>20150225T000000</td>\n <td>180000.0</td>\n <td>2.0</td>\n <td>1.00</td>\n <td>770</td>\n <td>10000</td>\n <td>1.0</td>\n <td>0</td>\n <td>...</td>\n <td>6</td>\n <td>770</td>\n <td>0</td>\n <td>1933</td>\n <td>0</td>\n <td>98028</td>\n <td>47.7379</td>\n <td>-122.233</td>\n <td>2720</td>\n <td>8062</td>\n </tr>\n <tr>\n <th>3</th>\n <td>3</td>\n <td>2487200875</td>\n <td>20141209T000000</td>\n <td>604000.0</td>\n <td>4.0</td>\n <td>3.00</td>\n <td>1960</td>\n <td>5000</td>\n <td>1.0</td>\n <td>0</td>\n <td>...</td>\n <td>7</td>\n <td>1050</td>\n <td>910</td>\n <td>1965</td>\n <td>0</td>\n <td>98136</td>\n <td>47.5208</td>\n <td>-122.393</td>\n <td>1360</td>\n <td>5000</td>\n </tr>\n <tr>\n <th>4</th>\n <td>4</td>\n <td>1954400510</td>\n <td>20150218T000000</td>\n <td>510000.0</td>\n <td>3.0</td>\n <td>2.00</td>\n <td>1680</td>\n <td>8080</td>\n <td>1.0</td>\n <td>0</td>\n <td>...</td>\n <td>8</td>\n <td>1680</td>\n <td>0</td>\n <td>1987</td>\n <td>0</td>\n <td>98074</td>\n <td>47.6168</td>\n <td>-122.045</td>\n <td>1800</td>\n <td>7503</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows \u00d7 22 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 1 \nDisplay the data types of each column using the attribute dtype, then take a screenshot and submit it, include your code in the image. "
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "df.dtypes",
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 4,
"data": {
"text/plain": "Unnamed: 0 int64\nid int64\ndate object\nprice float64\nbedrooms float64\nbathrooms float64\nsqft_living int64\nsqft_lot int64\nfloors float64\nwaterfront int64\nview int64\ncondition int64\ngrade int64\nsqft_above int64\nsqft_basement int64\nyr_built int64\nyr_renovated int64\nzipcode int64\nlat float64\nlong float64\nsqft_living15 int64\nsqft_lot15 int64\ndtype: object"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We use the method describe to obtain a statistical summary of the dataframe."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "df.describe()",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": " Unnamed: 0 id price bedrooms bathrooms \\\ncount 21613.00000 2.161300e+04 2.161300e+04 21600.000000 21603.000000 \nmean 10806.00000 4.580302e+09 5.400881e+05 3.372870 2.115736 \nstd 6239.28002 2.876566e+09 3.671272e+05 0.926657 0.768996 \nmin 0.00000 1.000102e+06 7.500000e+04 1.000000 0.500000 \n25% 5403.00000 2.123049e+09 3.219500e+05 3.000000 1.750000 \n50% 10806.00000 3.904930e+09 4.500000e+05 3.000000 2.250000 \n75% 16209.00000 7.308900e+09 6.450000e+05 4.000000 2.500000 \nmax 21612.00000 9.900000e+09 7.700000e+06 33.000000 8.000000 \n\n sqft_living sqft_lot floors waterfront view \\\ncount 21613.000000 2.161300e+04 21613.000000 21613.000000 21613.000000 \nmean 2079.899736 1.510697e+04 1.494309 0.007542 0.234303 \nstd 918.440897 4.142051e+04 0.539989 0.086517 0.766318 \nmin 290.000000 5.200000e+02 1.000000 0.000000 0.000000 \n25% 1427.000000 5.040000e+03 1.000000 0.000000 0.000000 \n50% 1910.000000 7.618000e+03 1.500000 0.000000 0.000000 \n75% 2550.000000 1.068800e+04 2.000000 0.000000 0.000000 \nmax 13540.000000 1.651359e+06 3.500000 1.000000 4.000000 \n\n ... grade sqft_above sqft_basement yr_built \\\ncount ... 21613.000000 21613.000000 21613.000000 21613.000000 \nmean ... 7.656873 1788.390691 291.509045 1971.005136 \nstd ... 1.175459 828.090978 442.575043 29.373411 \nmin ... 1.000000 290.000000 0.000000 1900.000000 \n25% ... 7.000000 1190.000000 0.000000 1951.000000 \n50% ... 7.000000 1560.000000 0.000000 1975.000000 \n75% ... 8.000000 2210.000000 560.000000 1997.000000 \nmax ... 13.000000 9410.000000 4820.000000 2015.000000 \n\n yr_renovated zipcode lat long sqft_living15 \\\ncount 21613.000000 21613.000000 21613.000000 21613.000000 21613.000000 \nmean 84.402258 98077.939805 47.560053 -122.213896 1986.552492 \nstd 401.679240 53.505026 0.138564 0.140828 685.391304 \nmin 0.000000 98001.000000 47.155900 -122.519000 399.000000 \n25% 0.000000 98033.000000 47.471000 -122.328000 1490.000000 \n50% 0.000000 98065.000000 47.571800 -122.230000 1840.000000 \n75% 0.000000 98118.000000 47.678000 -122.125000 2360.000000 \nmax 2015.000000 98199.000000 47.777600 -121.315000 6210.000000 \n\n sqft_lot15 \ncount 21613.000000 \nmean 12768.455652 \nstd 27304.179631 \nmin 651.000000 \n25% 5100.000000 \n50% 7620.000000 \n75% 10083.000000 \nmax 871200.000000 \n\n[8 rows x 21 columns]",
"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>Unnamed: 0</th>\n <th>id</th>\n <th>price</th>\n <th>bedrooms</th>\n <th>bathrooms</th>\n <th>sqft_living</th>\n <th>sqft_lot</th>\n <th>floors</th>\n <th>waterfront</th>\n <th>view</th>\n <th>...</th>\n <th>grade</th>\n <th>sqft_above</th>\n <th>sqft_basement</th>\n <th>yr_built</th>\n <th>yr_renovated</th>\n <th>zipcode</th>\n <th>lat</th>\n <th>long</th>\n <th>sqft_living15</th>\n <th>sqft_lot15</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>count</th>\n <td>21613.00000</td>\n <td>2.161300e+04</td>\n <td>2.161300e+04</td>\n <td>21600.000000</td>\n <td>21603.000000</td>\n <td>21613.000000</td>\n <td>2.161300e+04</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>...</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n </tr>\n <tr>\n <th>mean</th>\n <td>10806.00000</td>\n <td>4.580302e+09</td>\n <td>5.400881e+05</td>\n <td>3.372870</td>\n <td>2.115736</td>\n <td>2079.899736</td>\n <td>1.510697e+04</td>\n <td>1.494309</td>\n <td>0.007542</td>\n <td>0.234303</td>\n <td>...</td>\n <td>7.656873</td>\n <td>1788.390691</td>\n <td>291.509045</td>\n <td>1971.005136</td>\n <td>84.402258</td>\n <td>98077.939805</td>\n <td>47.560053</td>\n <td>-122.213896</td>\n <td>1986.552492</td>\n <td>12768.455652</td>\n </tr>\n <tr>\n <th>std</th>\n <td>6239.28002</td>\n <td>2.876566e+09</td>\n <td>3.671272e+05</td>\n <td>0.926657</td>\n <td>0.768996</td>\n <td>918.440897</td>\n <td>4.142051e+04</td>\n <td>0.539989</td>\n <td>0.086517</td>\n <td>0.766318</td>\n <td>...</td>\n <td>1.175459</td>\n <td>828.090978</td>\n <td>442.575043</td>\n <td>29.373411</td>\n <td>401.679240</td>\n <td>53.505026</td>\n <td>0.138564</td>\n <td>0.140828</td>\n <td>685.391304</td>\n <td>27304.179631</td>\n </tr>\n <tr>\n <th>min</th>\n <td>0.00000</td>\n <td>1.000102e+06</td>\n <td>7.500000e+04</td>\n <td>1.000000</td>\n <td>0.500000</td>\n <td>290.000000</td>\n <td>5.200000e+02</td>\n <td>1.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>...</td>\n <td>1.000000</td>\n <td>290.000000</td>\n <td>0.000000</td>\n <td>1900.000000</td>\n <td>0.000000</td>\n <td>98001.000000</td>\n <td>47.155900</td>\n <td>-122.519000</td>\n <td>399.000000</td>\n <td>651.000000</td>\n </tr>\n <tr>\n <th>25%</th>\n <td>5403.00000</td>\n <td>2.123049e+09</td>\n <td>3.219500e+05</td>\n <td>3.000000</td>\n <td>1.750000</td>\n <td>1427.000000</td>\n <td>5.040000e+03</td>\n <td>1.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>...</td>\n <td>7.000000</td>\n <td>1190.000000</td>\n <td>0.000000</td>\n <td>1951.000000</td>\n <td>0.000000</td>\n <td>98033.000000</td>\n <td>47.471000</td>\n <td>-122.328000</td>\n <td>1490.000000</td>\n <td>5100.000000</td>\n </tr>\n <tr>\n <th>50%</th>\n <td>10806.00000</td>\n <td>3.904930e+09</td>\n <td>4.500000e+05</td>\n <td>3.000000</td>\n <td>2.250000</td>\n <td>1910.000000</td>\n <td>7.618000e+03</td>\n <td>1.500000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>...</td>\n <td>7.000000</td>\n <td>1560.000000</td>\n <td>0.000000</td>\n <td>1975.000000</td>\n <td>0.000000</td>\n <td>98065.000000</td>\n <td>47.571800</td>\n <td>-122.230000</td>\n <td>1840.000000</td>\n <td>7620.000000</td>\n </tr>\n <tr>\n <th>75%</th>\n <td>16209.00000</td>\n <td>7.308900e+09</td>\n <td>6.450000e+05</td>\n <td>4.000000</td>\n <td>2.500000</td>\n <td>2550.000000</td>\n <td>1.068800e+04</td>\n <td>2.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>...</td>\n <td>8.000000</td>\n <td>2210.000000</td>\n <td>560.000000</td>\n <td>1997.000000</td>\n <td>0.000000</td>\n <td>98118.000000</td>\n <td>47.678000</td>\n <td>-122.125000</td>\n <td>2360.000000</td>\n <td>10083.000000</td>\n </tr>\n <tr>\n <th>max</th>\n <td>21612.00000</td>\n <td>9.900000e+09</td>\n <td>7.700000e+06</td>\n <td>33.000000</td>\n <td>8.000000</td>\n <td>13540.000000</td>\n <td>1.651359e+06</td>\n <td>3.500000</td>\n <td>1.000000</td>\n <td>4.000000</td>\n <td>...</td>\n <td>13.000000</td>\n <td>9410.000000</td>\n <td>4820.000000</td>\n <td>2015.000000</td>\n <td>2015.000000</td>\n <td>98199.000000</td>\n <td>47.777600</td>\n <td>-121.315000</td>\n <td>6210.000000</td>\n <td>871200.000000</td>\n </tr>\n </tbody>\n</table>\n<p>8 rows \u00d7 21 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Module 2: Data Wrangling"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 2 \nDrop the columns <code>\"id\"</code> and <code>\"Unnamed: 0\"</code> from axis 1 using the method <code>drop()</code>, then use the method <code>describe()</code> to obtain a statistical summary of the data. Take a screenshot and submit it, make sure the <code>inplace</code> parameter is set to <code>True</code>"
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "df.drop(['id', 'Unnamed: 0'], axis = 1, inplace = True)\ndf.describe()",
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 6,
"data": {
"text/plain": " price bedrooms bathrooms sqft_living sqft_lot \\\ncount 2.161300e+04 21600.000000 21603.000000 21613.000000 2.161300e+04 \nmean 5.400881e+05 3.372870 2.115736 2079.899736 1.510697e+04 \nstd 3.671272e+05 0.926657 0.768996 918.440897 4.142051e+04 \nmin 7.500000e+04 1.000000 0.500000 290.000000 5.200000e+02 \n25% 3.219500e+05 3.000000 1.750000 1427.000000 5.040000e+03 \n50% 4.500000e+05 3.000000 2.250000 1910.000000 7.618000e+03 \n75% 6.450000e+05 4.000000 2.500000 2550.000000 1.068800e+04 \nmax 7.700000e+06 33.000000 8.000000 13540.000000 1.651359e+06 \n\n floors waterfront view condition grade \\\ncount 21613.000000 21613.000000 21613.000000 21613.000000 21613.000000 \nmean 1.494309 0.007542 0.234303 3.409430 7.656873 \nstd 0.539989 0.086517 0.766318 0.650743 1.175459 \nmin 1.000000 0.000000 0.000000 1.000000 1.000000 \n25% 1.000000 0.000000 0.000000 3.000000 7.000000 \n50% 1.500000 0.000000 0.000000 3.000000 7.000000 \n75% 2.000000 0.000000 0.000000 4.000000 8.000000 \nmax 3.500000 1.000000 4.000000 5.000000 13.000000 \n\n sqft_above sqft_basement yr_built yr_renovated zipcode \\\ncount 21613.000000 21613.000000 21613.000000 21613.000000 21613.000000 \nmean 1788.390691 291.509045 1971.005136 84.402258 98077.939805 \nstd 828.090978 442.575043 29.373411 401.679240 53.505026 \nmin 290.000000 0.000000 1900.000000 0.000000 98001.000000 \n25% 1190.000000 0.000000 1951.000000 0.000000 98033.000000 \n50% 1560.000000 0.000000 1975.000000 0.000000 98065.000000 \n75% 2210.000000 560.000000 1997.000000 0.000000 98118.000000 \nmax 9410.000000 4820.000000 2015.000000 2015.000000 98199.000000 \n\n lat long sqft_living15 sqft_lot15 \ncount 21613.000000 21613.000000 21613.000000 21613.000000 \nmean 47.560053 -122.213896 1986.552492 12768.455652 \nstd 0.138564 0.140828 685.391304 27304.179631 \nmin 47.155900 -122.519000 399.000000 651.000000 \n25% 47.471000 -122.328000 1490.000000 5100.000000 \n50% 47.571800 -122.230000 1840.000000 7620.000000 \n75% 47.678000 -122.125000 2360.000000 10083.000000 \nmax 47.777600 -121.315000 6210.000000 871200.000000 ",
"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>price</th>\n <th>bedrooms</th>\n <th>bathrooms</th>\n <th>sqft_living</th>\n <th>sqft_lot</th>\n <th>floors</th>\n <th>waterfront</th>\n <th>view</th>\n <th>condition</th>\n <th>grade</th>\n <th>sqft_above</th>\n <th>sqft_basement</th>\n <th>yr_built</th>\n <th>yr_renovated</th>\n <th>zipcode</th>\n <th>lat</th>\n <th>long</th>\n <th>sqft_living15</th>\n <th>sqft_lot15</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>count</th>\n <td>2.161300e+04</td>\n <td>21600.000000</td>\n <td>21603.000000</td>\n <td>21613.000000</td>\n <td>2.161300e+04</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n <td>21613.000000</td>\n </tr>\n <tr>\n <th>mean</th>\n <td>5.400881e+05</td>\n <td>3.372870</td>\n <td>2.115736</td>\n <td>2079.899736</td>\n <td>1.510697e+04</td>\n <td>1.494309</td>\n <td>0.007542</td>\n <td>0.234303</td>\n <td>3.409430</td>\n <td>7.656873</td>\n <td>1788.390691</td>\n <td>291.509045</td>\n <td>1971.005136</td>\n <td>84.402258</td>\n <td>98077.939805</td>\n <td>47.560053</td>\n <td>-122.213896</td>\n <td>1986.552492</td>\n <td>12768.455652</td>\n </tr>\n <tr>\n <th>std</th>\n <td>3.671272e+05</td>\n <td>0.926657</td>\n <td>0.768996</td>\n <td>918.440897</td>\n <td>4.142051e+04</td>\n <td>0.539989</td>\n <td>0.086517</td>\n <td>0.766318</td>\n <td>0.650743</td>\n <td>1.175459</td>\n <td>828.090978</td>\n <td>442.575043</td>\n <td>29.373411</td>\n <td>401.679240</td>\n <td>53.505026</td>\n <td>0.138564</td>\n <td>0.140828</td>\n <td>685.391304</td>\n <td>27304.179631</td>\n </tr>\n <tr>\n <th>min</th>\n <td>7.500000e+04</td>\n <td>1.000000</td>\n <td>0.500000</td>\n <td>290.000000</td>\n <td>5.200000e+02</td>\n <td>1.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>1.000000</td>\n <td>1.000000</td>\n <td>290.000000</td>\n <td>0.000000</td>\n <td>1900.000000</td>\n <td>0.000000</td>\n <td>98001.000000</td>\n <td>47.155900</td>\n <td>-122.519000</td>\n <td>399.000000</td>\n <td>651.000000</td>\n </tr>\n <tr>\n <th>25%</th>\n <td>3.219500e+05</td>\n <td>3.000000</td>\n <td>1.750000</td>\n <td>1427.000000</td>\n <td>5.040000e+03</td>\n <td>1.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>3.000000</td>\n <td>7.000000</td>\n <td>1190.000000</td>\n <td>0.000000</td>\n <td>1951.000000</td>\n <td>0.000000</td>\n <td>98033.000000</td>\n <td>47.471000</td>\n <td>-122.328000</td>\n <td>1490.000000</td>\n <td>5100.000000</td>\n </tr>\n <tr>\n <th>50%</th>\n <td>4.500000e+05</td>\n <td>3.000000</td>\n <td>2.250000</td>\n <td>1910.000000</td>\n <td>7.618000e+03</td>\n <td>1.500000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>3.000000</td>\n <td>7.000000</td>\n <td>1560.000000</td>\n <td>0.000000</td>\n <td>1975.000000</td>\n <td>0.000000</td>\n <td>98065.000000</td>\n <td>47.571800</td>\n <td>-122.230000</td>\n <td>1840.000000</td>\n <td>7620.000000</td>\n </tr>\n <tr>\n <th>75%</th>\n <td>6.450000e+05</td>\n <td>4.000000</td>\n <td>2.500000</td>\n <td>2550.000000</td>\n <td>1.068800e+04</td>\n <td>2.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>4.000000</td>\n <td>8.000000</td>\n <td>2210.000000</td>\n <td>560.000000</td>\n <td>1997.000000</td>\n <td>0.000000</td>\n <td>98118.000000</td>\n <td>47.678000</td>\n <td>-122.125000</td>\n <td>2360.000000</td>\n <td>10083.000000</td>\n </tr>\n <tr>\n <th>max</th>\n <td>7.700000e+06</td>\n <td>33.000000</td>\n <td>8.000000</td>\n <td>13540.000000</td>\n <td>1.651359e+06</td>\n <td>3.500000</td>\n <td>1.000000</td>\n <td>4.000000</td>\n <td>5.000000</td>\n <td>13.000000</td>\n <td>9410.000000</td>\n <td>4820.000000</td>\n <td>2015.000000</td>\n <td>2015.000000</td>\n <td>98199.000000</td>\n <td>47.777600</td>\n <td>-121.315000</td>\n <td>6210.000000</td>\n <td>871200.000000</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We can see we have missing values for the columns <code> bedrooms</code> and <code> bathrooms </code>"
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "print(\"number of NaN values for the column bedrooms :\", df['bedrooms'].isnull().sum())\nprint(\"number of NaN values for the column bathrooms :\", df['bathrooms'].isnull().sum())\n",
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"text": "number of NaN values for the column bedrooms : 13\nnumber of NaN values for the column bathrooms : 10\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "\nWe can replace the missing values of the column <code>'bedrooms'</code> with the mean of the column <code>'bedrooms' </code> using the method <code>replace()</code>. Don't forget to set the <code>inplace</code> parameter to <code>True</code>"
},
{
"metadata": {},
"cell_type": "code",
"source": "mean=df['bedrooms'].mean()\ndf['bedrooms'].replace(np.nan,mean, inplace=True)",
"execution_count": 8,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "\nWe also replace the missing values of the column <code>'bathrooms'</code> with the mean of the column <code>'bathrooms' </code> using the method <code>replace()</code>. Don't forget to set the <code> inplace </code> parameter top <code> True </code>"
},
{
"metadata": {},
"cell_type": "code",
"source": "mean=df['bathrooms'].mean()\ndf['bathrooms'].replace(np.nan,mean, inplace=True)",
"execution_count": 9,
"outputs": []
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "print(\"number of NaN values for the column bedrooms :\", df['bedrooms'].isnull().sum())\nprint(\"number of NaN values for the column bathrooms :\", df['bathrooms'].isnull().sum())",
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"text": "number of NaN values for the column bedrooms : 0\nnumber of NaN values for the column bathrooms : 0\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Module 3: Exploratory Data Analysis"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 3\nUse the method <code>value_counts</code> to count the number of houses with unique floor values, use the method <code>.to_frame()</code> to convert it to a dataframe.\n"
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "df.floors.value_counts().to_frame()",
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 11,
"data": {
"text/plain": " floors\n1.0 10680\n2.0 8241\n1.5 1910\n3.0 613\n2.5 161\n3.5 8",
"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>floors</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1.0</th>\n <td>10680</td>\n </tr>\n <tr>\n <th>2.0</th>\n <td>8241</td>\n </tr>\n <tr>\n <th>1.5</th>\n <td>1910</td>\n </tr>\n <tr>\n <th>3.0</th>\n <td>613</td>\n </tr>\n <tr>\n <th>2.5</th>\n <td>161</td>\n </tr>\n <tr>\n <th>3.5</th>\n <td>8</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 4\nUse the function <code>boxplot</code> in the seaborn library to determine whether houses with a waterfront view or without a waterfront view have more price outliers."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "sns.boxplot(x=df[\"waterfront\"], y=df[\"price\"], data=df)",
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 12,
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x7f6b24e19c18>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 5\nUse the function <code>regplot</code> in the seaborn library to determine if the feature <code>sqft_above</code> is negatively or positively correlated with price."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "sns.regplot(x=df[\"sqft_above\"],y=df[\"price\"],data=df)\nplt.ylim(0,)",
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 13,
"data": {
"text/plain": "(0, 8086140.100295401)"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "\nWe can use the Pandas method <code>corr()</code> to find the feature other than price that is most correlated with price."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "df.corr()['price'].sort_values()",
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 14,
"data": {
"text/plain": "zipcode -0.053203\nlong 0.021626\ncondition 0.036362\nyr_built 0.054012\nsqft_lot15 0.082447\nsqft_lot 0.089661\nyr_renovated 0.126434\nfloors 0.256794\nwaterfront 0.266369\nlat 0.307003\nbedrooms 0.308797\nsqft_basement 0.323816\nview 0.397293\nbathrooms 0.525738\nsqft_living15 0.585379\nsqft_above 0.605567\ngrade 0.667434\nsqft_living 0.702035\nprice 1.000000\nName: price, dtype: float64"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Module 4: Model Development"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "\nWe can Fit a linear regression model using the longitude feature <code>'long'</code> and caculate the R^2."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "X = df[['long']]\nY = df['price']\nlm = LinearRegression()\nlm.fit(X,Y)\nlm.score(X, Y)",
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 15,
"data": {
"text/plain": "0.00046769430149007363"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 6\nFit a linear regression model to predict the <code>'price'</code> using the feature <code>'sqft_living'</code> then calculate the R^2. Take a screenshot of your code and the value of the R^2."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "x = df[['sqft_living']]\ny = df.price\nlr = LinearRegression()\nlr.fit(x, y)\nlr.score(x, y)",
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 16,
"data": {
"text/plain": "0.49285321790379316"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 7\nFit a linear regression model to predict the <code>'price'</code> using the list of features:"
},
{
"metadata": {},
"cell_type": "code",
"source": "features =[\"floors\", \"waterfront\",\"lat\" ,\"bedrooms\" ,\"sqft_basement\" ,\"view\" ,\"bathrooms\",\"sqft_living15\",\"sqft_above\",\"grade\",\"sqft_living\"] ",
"execution_count": 17,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Then calculate the R^2. Take a screenshot of your code."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "X = df[features]\ny = df.price\nlr.fit(X, y)\nlr.score(X, y)",
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 20,
"data": {
"text/plain": "0.657679183672129"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### This will help with Question 8\n\nCreate a list of tuples, the first element in the tuple contains the name of the estimator:\n\n<code>'scale'</code>\n\n<code>'polynomial'</code>\n\n<code>'model'</code>\n\nThe second element in the tuple contains the model constructor \n\n<code>StandardScaler()</code>\n\n<code>PolynomialFeatures(include_bias=False)</code>\n\n<code>LinearRegression()</code>\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "Input=[('scale',StandardScaler()),('polynomial', PolynomialFeatures(include_bias=False)),('model',LinearRegression())]",
"execution_count": 19,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 8\nUse the list to create a pipeline object to predict the 'price', fit the object using the features in the list <code>features</code>, and calculate the R^2."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "X = df[features]\ny = df.price\npipe = Pipeline(Input)\npipe.fit(X, y)\npipe.score(X, y)",
"execution_count": 21,
"outputs": [
{
"output_type": "stream",
"text": "/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/preprocessing/data.py:645: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n return self.partial_fit(X, y)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/base.py:467: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n return self.fit(X, y, **fit_params).transform(X)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/pipeline.py:511: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n Xt = transform.transform(Xt)\n",
"name": "stderr"
},
{
"output_type": "execute_result",
"execution_count": 21,
"data": {
"text/plain": "0.7513408553309376"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Module 5: Model Evaluation and Refinement"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Import the necessary modules:"
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "from sklearn.model_selection import cross_val_score\nfrom sklearn.model_selection import train_test_split\nprint(\"done\")",
"execution_count": 23,
"outputs": [
{
"output_type": "stream",
"text": "done\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We will split the data into training and testing sets:"
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "features =[\"floors\", \"waterfront\",\"lat\" ,\"bedrooms\" ,\"sqft_basement\" ,\"view\" ,\"bathrooms\",\"sqft_living15\",\"sqft_above\",\"grade\",\"sqft_living\"] \nX = df[features]\nY = df['price']\n\nx_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.15, random_state=1)\n\n\nprint(\"number of test samples:\", x_test.shape[0])\nprint(\"number of training samples:\",x_train.shape[0])",
"execution_count": 24,
"outputs": [
{
"output_type": "stream",
"text": "number of test samples: 3242\nnumber of training samples: 18371\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 9\nCreate and fit a Ridge regression object using the training data, set the regularization parameter to 0.1, and calculate the R^2 using the test data. \n"
},
{
"metadata": {},
"cell_type": "code",
"source": "from sklearn.linear_model import Ridge",
"execution_count": 26,
"outputs": []
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "rm = Ridge(alpha=0.1)\nrm.fit(x_train, y_train)\nrm.score(x_test, y_test)",
"execution_count": 27,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 27,
"data": {
"text/plain": "0.6478759163939121"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Question 10\nPerform a second order polynomial transform on both the training data and testing data. Create and fit a Ridge regression object using the training data, set the regularisation parameter to 0.1, and calculate the R^2 utilising the test data provided. Take a screenshot of your code and the R^2."
},
{
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"cell_type": "code",
"source": "pr = PolynomialFeatures(degree = 2)\nX_train_pr = pr.fit_transform(x_train)\nX_test_pr = pr.fit_transform(x_test)\n\nrr = Ridge(alpha = 0.1)\nrr.fit(X_train_pr, y_train)\nrr.score(X_test_pr, y_test)",
"execution_count": 28,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 28,
"data": {
"text/plain": "0.7002744279699229"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<p>Once you complete your notebook you will have to share it. Select the icon on the top right a marked in red in the image below, a dialogue box should open, and select the option all&nbsp;content excluding sensitive code cells.</p>\n <p><img width=\"600\" src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/coursera/project/save_notebook.png\" alt=\"share notebook\" style=\"display: block; margin-left: auto; margin-right: auto;\"/></p>\n <p></p>\n <p>You can then share the notebook&nbsp; via a&nbsp; URL by scrolling down as shown in the following image:</p>\n <p style=\"text-align: center;\"><img width=\"600\" src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/coursera/project/url_notebook.png\" alt=\"HTML\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\n <p>&nbsp;</p>"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h2>About the Authors:</h2> \n\n<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\">Joseph Santarcangelo</a> has a PhD in Electrical Engineering, his research focused on using machine learning, signal processing, and computer vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Other contributors: <a href=\"https://www.linkedin.com/in/michelleccarey/\">Michelle Carey</a>, <a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a> "
},
{
"metadata": {},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.6",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.9",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"widgets": {
"state": {},
"version": "1.1.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment