Skip to content

Instantly share code, notes, and snippets.

@jaskiratr
Last active June 14, 2016 05:39
Show Gist options
  • Save jaskiratr/be370d1c125250bf0022b4315b7cd014 to your computer and use it in GitHub Desktop.
Save jaskiratr/be370d1c125250bf0022b4315b7cd014 to your computer and use it in GitHub Desktop.
ML Spring 2016: Regression Task
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#Kitchen Sink Model\n",
"# State Tax Collections http://www2.census.gov/govs/statetax/14staxcd.txt\n",
"# Geo Data http://download.geonames.org/export/dump/\n",
"# Subsidized Households 2008 http://www.HUDuser.org/portal/picture2008/2008_tract.zip\n",
"# Zip Codes https://www.aggdata.com/node/86\n",
"# Unemployment Rates http://www.bls.gov/lau/laucntycur14.txt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1444, 152)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sal = pd.read_csv('../Data/salaries_parent.csv')\n",
"sal.shape"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Zip</th>\n",
" <th>B19013_001</th>\n",
" <th>no_male_hs_p</th>\n",
" <th>no_female_hs_p</th>\n",
" <th>at_least_hs_male_p</th>\n",
" <th>at_least_hs_female_p</th>\n",
" <th>at_least_bach_male_p</th>\n",
" <th>at_least_bach_female_p</th>\n",
" <th>male_unemployment</th>\n",
" <th>female_unemployment</th>\n",
" <th>...</th>\n",
" <th>T51</th>\n",
" <th>T53</th>\n",
" <th>T99</th>\n",
" <th>Place Name</th>\n",
" <th>State_y</th>\n",
" <th>State Abbreviation</th>\n",
" <th>County</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" <th>Unnamed: 60</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1003</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>100.0</td>\n",
" <td>100.0</td>\n",
" <td>35.46798</td>\n",
" <td>76.470588</td>\n",
" <td>6.92323</td>\n",
" <td>7.939714</td>\n",
" <td>...</td>\n",
" <td>246850</td>\n",
" <td>0</td>\n",
" <td>197503</td>\n",
" <td>Amherst</td>\n",
" <td>Massachusetts</td>\n",
" <td>MA</td>\n",
" <td>Hampshire</td>\n",
" <td>42.3919</td>\n",
" <td>-72.5248</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1003</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>100.0</td>\n",
" <td>100.0</td>\n",
" <td>35.46798</td>\n",
" <td>76.470588</td>\n",
" <td>6.92323</td>\n",
" <td>7.939714</td>\n",
" <td>...</td>\n",
" <td>246850</td>\n",
" <td>0</td>\n",
" <td>197503</td>\n",
" <td>Amherst</td>\n",
" <td>Massachusetts</td>\n",
" <td>MA</td>\n",
" <td>Hampshire</td>\n",
" <td>42.3919</td>\n",
" <td>-72.5248</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1003</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>100.0</td>\n",
" <td>100.0</td>\n",
" <td>35.46798</td>\n",
" <td>76.470588</td>\n",
" <td>6.92323</td>\n",
" <td>7.939714</td>\n",
" <td>...</td>\n",
" <td>246850</td>\n",
" <td>0</td>\n",
" <td>197503</td>\n",
" <td>Amherst</td>\n",
" <td>Massachusetts</td>\n",
" <td>MA</td>\n",
" <td>Hampshire</td>\n",
" <td>42.3919</td>\n",
" <td>-72.5248</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1003</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>100.0</td>\n",
" <td>100.0</td>\n",
" <td>35.46798</td>\n",
" <td>76.470588</td>\n",
" <td>6.92323</td>\n",
" <td>7.939714</td>\n",
" <td>...</td>\n",
" <td>246850</td>\n",
" <td>0</td>\n",
" <td>197503</td>\n",
" <td>Amherst</td>\n",
" <td>Massachusetts</td>\n",
" <td>MA</td>\n",
" <td>Hampshire</td>\n",
" <td>42.3919</td>\n",
" <td>-72.5248</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1003</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>100.0</td>\n",
" <td>100.0</td>\n",
" <td>35.46798</td>\n",
" <td>76.470588</td>\n",
" <td>6.92323</td>\n",
" <td>7.939714</td>\n",
" <td>...</td>\n",
" <td>246850</td>\n",
" <td>0</td>\n",
" <td>197503</td>\n",
" <td>Amherst</td>\n",
" <td>Massachusetts</td>\n",
" <td>MA</td>\n",
" <td>Hampshire</td>\n",
" <td>42.3919</td>\n",
" <td>-72.5248</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 152 columns</p>\n",
"</div>"
],
"text/plain": [
" Zip B19013_001 no_male_hs_p no_female_hs_p at_least_hs_male_p \\\n",
"0 1003 NaN 0.0 0.0 100.0 \n",
"1 1003 NaN 0.0 0.0 100.0 \n",
"2 1003 NaN 0.0 0.0 100.0 \n",
"3 1003 NaN 0.0 0.0 100.0 \n",
"4 1003 NaN 0.0 0.0 100.0 \n",
"\n",
" at_least_hs_female_p at_least_bach_male_p at_least_bach_female_p \\\n",
"0 100.0 35.46798 76.470588 \n",
"1 100.0 35.46798 76.470588 \n",
"2 100.0 35.46798 76.470588 \n",
"3 100.0 35.46798 76.470588 \n",
"4 100.0 35.46798 76.470588 \n",
"\n",
" male_unemployment female_unemployment ... T51 T53 T99 \\\n",
"0 6.92323 7.939714 ... 246850 0 197503 \n",
"1 6.92323 7.939714 ... 246850 0 197503 \n",
"2 6.92323 7.939714 ... 246850 0 197503 \n",
"3 6.92323 7.939714 ... 246850 0 197503 \n",
"4 6.92323 7.939714 ... 246850 0 197503 \n",
"\n",
" Place Name State_y State Abbreviation County Latitude \\\n",
"0 Amherst Massachusetts MA Hampshire 42.3919 \n",
"1 Amherst Massachusetts MA Hampshire 42.3919 \n",
"2 Amherst Massachusetts MA Hampshire 42.3919 \n",
"3 Amherst Massachusetts MA Hampshire 42.3919 \n",
"4 Amherst Massachusetts MA Hampshire 42.3919 \n",
"\n",
" Longitude Unnamed: 60 \n",
"0 -72.5248 NaN \n",
"1 -72.5248 NaN \n",
"2 -72.5248 NaN \n",
"3 -72.5248 NaN \n",
"4 -72.5248 NaN \n",
"\n",
"[5 rows x 152 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sal.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1412, 153)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# eliminate rows with missing Y values (NaN)\n",
"sal['missingSalary'] = pd.isnull(sal['salary'])\n",
"sal2 = sal[(sal.missingSalary == False)]\n",
"sal2.shape"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Anaconda3\\lib\\site-packages\\pandas\\core\\generic.py:3178: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" self._update_inplace(new_data)\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Fill the missing values with mean value\n",
"sal2.fillna(sal2.mean(), inplace=True)\n",
"sal2.isnull().values.any()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:7: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
]
},
{
"data": {
"text/plain": [
"(1412, 135)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# list of X vars to include\n",
"# Split into Numerica & Categorical\n",
"numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']\n",
"X_numeric = sal2.select_dtypes(include=numerics)\n",
"\n",
"# Remove Y salary from numerical X Vars \n",
"X_numeric.drop('salary', axis=1, inplace=True) \n",
"\n",
"X_categorical = sal2.select_dtypes(exclude=numerics)\n",
"X_numeric.shape"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# impute missing values in numerical features\n",
"# DOC: http://scikit-learn.org/stable/modules/preprocessing.html\n",
"from sklearn.preprocessing import Imputer\n",
"imp = Imputer()\n",
"imp.fit(X_numeric)\n",
"X_numeric_imputed = imp.transform(X_numeric)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create numeric dummy features from categorical set\n",
"X_dummy_features = []\n",
"for i in X_categorical.columns:\n",
" temp_dummies = pd.get_dummies(X_categorical[i])\n",
" X_dummy_features.append(temp_dummies)\n",
"X_dummy_features = pd.concat(X_dummy_features, axis=1)\n",
"X_dummy_features = X_dummy_features.as_matrix()\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"X = np.concatenate((X_dummy_features, X_numeric_imputed), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1412, 753)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# y is salary\n",
"y = sal2.iloc[:, 98].values\n",
"X.shape"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# create training and test sets\n",
"from sklearn.cross_validation import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(\n",
" X, y, test_size=0.3, random_state=1)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def modelPerformance ():\n",
" ### MODEL PERFORMANCE ###\n",
" \n",
"\n",
" # The Mean Squared Error\n",
" print(\"Mean Squared Error, training data: %d\"\n",
" % np.mean((regr.predict(X_train) - y_train) ** 2))\n",
" print(\"Mean Squared Error, test data: %d\"\n",
" % np.mean((regr.predict(X_test) - y_test) ** 2))\n",
" print(30 * '* ')\n",
"\n",
" # Variance score\n",
" print('Variance score, training data: %.2f' % regr.score(X_train, y_train))\n",
" print('Variance score, test data: %.2f' % regr.score(X_test, y_test))\n",
" print(30 * '* ')\n",
"\n",
" ### GRAPHS: DISTRIBUTION OF ERROR ###\n",
" print('Distribution of prediction error on training data:')\n",
" predError = regr.predict(X_train) - y_train\n",
" plt.hist(predError)\n",
" plt.xlim(-80000, 80000)\n",
" plt.show()\n",
"\n",
" print('Distribution of prediction error on test data:')\n",
" predError = regr.predict(X_test) - y_test\n",
" plt.hist(predError)\n",
" plt.xlim(-80000, 80000)\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn import datasets, linear_model\n",
"# DOC: http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Intercept: \n",
" 50221.7290513\n",
"Mean Squared Error, training data: 56781848\n",
"Mean Squared Error, test data: 85327104\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n",
"Variance score, training data: 0.82\n",
"Variance score, test data: 0.79\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n",
"Distribution of prediction error on training data:\n"
]
},
{
"data": {
"image/png": "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\nPLGDpfLQDS4AAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x19f7ba04898>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Distribution of prediction error on test data:\n"
]
},
{
"data": {
"image/png": "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\nWAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x19f00f7b4a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create linear regression object\n",
"regr = linear_model.LinearRegression()\n",
"\n",
"# Train the model using the training sets\n",
"X_train_no_intercept = X_train\n",
"X_train = X_train.reshape(-1, X_train.shape[1])\n",
"regr.fit(X_train, y_train)\n",
"\n",
"# The intercept\n",
"print('Intercept: \\n', regr.intercept_)\n",
"\n",
"modelPerformance()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean Squared Error, training data: 59823301\n",
"Mean Squared Error, test data: 82965476\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n",
"Variance score, training data: 0.81\n",
"Variance score, test data: 0.80\n",
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n",
"Distribution of prediction error on training data:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x19f015d3ac8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Distribution of prediction error on test data:\n"
]
},
{
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x19f01676c88>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## RIDGE REGRESSION\n",
"# DOC: http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html\n",
"\n",
"# Create linear regression object\n",
"regr = linear_model.Ridge(alpha=15)\n",
"# regr = linear_model.BayesianRidge(normalize=True) # Lower RSS\n",
"\n",
"# Train the model using the training sets\n",
"X_train_no_intercept = X_train\n",
"X_train = X_train.reshape(-1, X_train.shape[1])\n",
"regr.fit(X_train, y_train)\n",
"\n",
"modelPerformance()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment