Skip to content

Instantly share code, notes, and snippets.

@joesilverstein
Created March 13, 2017 09:01
Show Gist options
  • Save joesilverstein/f0ce6cf65262b4a86acf9e23350c245c to your computer and use it in GitHub Desktop.
Save joesilverstein/f0ce6cf65262b4a86acf9e23350c245c to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#Part 1"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from scipy import stats\n",
"import random\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn import svm\n",
"from sklearn.model_selection import cross_val_score\n",
"import math\n",
"import GPy\n",
"import GPyOpt\n",
"from numpy.random import seed"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"seed(777)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"headers = pd.read_csv('../data/field_names.txt', header = None)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Need to convert header into a list of strings\n",
"data = pd.read_csv('../data/breast-cancer.csv', names = list(headers.ix[:, 0]))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"benigndata = data[data.diagnosis == 'B']\n",
"malignantdata = data[data.diagnosis == 'M']"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.0003212885154085\n",
"4.323929245283021\n"
]
}
],
"source": [
"# Mean smoothness for benign vs. malignant tumors\n",
"# Note that we're only given the mean smoothness for each training example,\n",
"# so I'm assuming it's asking for the mean and medians of the mean smoothness\n",
"\n",
"benignsmoothness = benigndata[\"smoothness_mean\"]\n",
"malignantsmoothness = malignantdata[\"smoothness_mean\"]\n",
"print(np.mean(benignsmoothness))\n",
"print(np.mean(malignantsmoothness))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0.9207150936126709, 8.520467317807423e-13)\n",
"(0.7813737988471985, 1.6916448361173315e-16)\n"
]
}
],
"source": [
"# Welch's t-test assumes normality of both populations, so first test for this\n",
"# using Shapiro-Wilk test (most powerful test available)\n",
"print(stats.shapiro(benignsmoothness))\n",
"print(stats.shapiro(malignantsmoothness))"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"p-value is below 0.05, so reject null hypothesis of normality. So can't use t-test to test for differences in means. Instead, can use bootstrapping."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# function to generate boostrap samples of the data\n",
"def sample(data):\n",
" sample = [random.choice(data) for _ in range(len(data))]\n",
" return(sample)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# H0: means are equal\n",
"def bootstrap_t_test(treatment, control, nboot = 1000):\n",
" ones = np.vstack((np.ones(len(treatment)),treatment))\n",
" treatment = ones.conj().transpose()\n",
" zeros = np.vstack((np.zeros(len(control)), control))\n",
" control = zeros.conj().transpose()\n",
" Z = np.vstack((treatment, control))\n",
" tstat = np.mean(treatment[:,1])-np.mean(control[:,1])\n",
" tboot = np.zeros(nboot)\n",
" for i in range(nboot):\n",
" sboot = sample(Z)\n",
" sboot = pd.DataFrame(np.array(sboot), columns=['treat', 'vals'])\n",
" tboot[i] = np.mean(sboot['vals'][sboot['treat'] == 1]) - np.mean(sboot['vals'][sboot['treat'] == 0]) - tstat\n",
" return(np.sum(tboot>=tstat-0)/nboot)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bootstrap_t_test(malignantsmoothness, benignsmoothness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that means of both populations are equal can be rejected. Thus, means are not equal"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.851\n",
"3.6795\n"
]
}
],
"source": [
"# Median smoothness for benign vs. malignant tumors\n",
"print(np.median(benignsmoothness))\n",
"print(np.median(malignantsmoothness))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"MannwhitneyuResult(statistic=9355.0, pvalue=2.5497186891129186e-51)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Test for difference in medians using Mann-Whitney U Test\n",
"# H0: Medians are equal\n",
"stats.mannwhitneyu(benignsmoothness, malignantsmoothness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that medians of both populations are equal can be rejected."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.02143824649859945\n",
"0.03228116509433961\n"
]
}
],
"source": [
"# Mean compactness for benign vs. malignant tumors\n",
"benigncompactness = benigndata[\"compactness_mean\"]\n",
"malignantcompactness = malignantdata[\"compactness_mean\"]\n",
"print(np.mean(benigncompactness))\n",
"print(np.mean(malignantcompactness))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bootstrap_t_test(malignantcompactness, benigncompactness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that means of both populations are equal can be rejected. Thus, means are not equal."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.01631\n",
"0.02859\n"
]
}
],
"source": [
"# Median compactness for benign vs. malignant tumors\n",
"print(np.median(benigncompactness))\n",
"print(np.median(malignantcompactness))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"MannwhitneyuResult(statistic=20640.5, pvalue=5.8403072470900432e-20)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# H0: Medians are equal\n",
"stats.mannwhitneyu(benigncompactness, malignantcompactness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that medians of both populations are equal can be rejected."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Determine which variables are most predictive of a malignant tumor\n",
"# using cross-tabs normalized by ranking by R value (correlation\n",
"# coefficient) of linear regression\n",
"X = pd.get_dummies(data.diagnosis)\n",
"nvar = 30\n",
"Rvalues = pd.Series(data = [-1.0] * nvar, index = data.columns[2:])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/joesilverstein/anaconda3/lib/python3.5/site-packages/scipy/linalg/basic.py:884: RuntimeWarning: internal gelsd driver lwork query error, required iwork dimension not returned. This is likely the result of LAPACK bug 0038, fixed in LAPACK 3.2.2 (released July 21, 2010). Falling back to 'gelss' driver.\n",
" warnings.warn(mesg, RuntimeWarning)\n"
]
}
],
"source": [
"for i in range(nvar):\n",
" y = data[Rvalues.index[i]]\n",
" mod = LinearRegression()\n",
" Rvalues[i] = math.sqrt(max(mod.fit(X, y).score(X, y), 0))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"fractal_dimension_mean 0.791273\n",
"concave_points_sd_error 0.780912\n",
"concavity_worst 0.775518\n",
"dtype: float64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# top 3 most predictive variables\n",
"Rvalues.sort_values(ascending = False)[:3]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean fractal_dimension_mean (benign): 0.07444434453781515\n",
"Mean fractal_dimension_mean (malignant): 0.18223731132075477\n",
"Ratio (malignant / benign): 2.4479671686569087 \n",
"\n",
"Mean concave_points_sd_error (benign): 87.00593837535018\n",
"Mean concave_points_sd_error (malignant): 141.37033018867922\n",
"Ratio (malignant / benign): 1.6248354173113673 \n",
"\n",
"Mean concavity_worst (benign): 13.379801120448189\n",
"Mean concavity_worst (malignant): 21.134811320754707\n",
"Ratio (malignant / benign): 1.5796057901379887\n"
]
}
],
"source": [
"# Display relationship visually:\n",
"benignmean = np.mean(benigndata.fractal_dimension_mean)\n",
"malignantmean = np.mean(malignantdata.fractal_dimension_mean)\n",
"print(\"Mean fractal_dimension_mean (benign):\", benignmean)\n",
"print(\"Mean fractal_dimension_mean (malignant):\", malignantmean)\n",
"print(\"Ratio (malignant / benign):\", malignantmean / benignmean, '\\n')\n",
"benignmean = np.mean(benigndata.concave_points_sd_error)\n",
"malignantmean = np.mean(malignantdata.concave_points_sd_error)\n",
"print(\"Mean concave_points_sd_error (benign):\", benignmean)\n",
"print(\"Mean concave_points_sd_error (malignant):\", malignantmean)\n",
"print(\"Ratio (malignant / benign):\", malignantmean / benignmean, '\\n')\n",
"benignmean = np.mean(benigndata.concavity_worst)\n",
"malignantmean = np.mean(malignantdata.concavity_worst)\n",
"print(\"Mean concavity_worst (benign):\", benignmean)\n",
"print(\"Mean concavity_worst (malignant):\", malignantmean)\n",
"print(\"Ratio (malignant / benign):\", malignantmean / benignmean)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Random Forest\n",
"# Test on 20% of training examples to evaluate performance of model\n",
"testsize = int(data.shape[0] / 5)\n",
"idx = np.random.permutation(data.shape[0])\n",
"train_idx = idx[testsize:]\n",
"test_idx = idx[:testsize]\n",
"traindata = data.ix[train_idx, :]\n",
"testdata = data.ix[test_idx, :]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"rfmod = RandomForestClassifier(n_estimators = 500, oob_score = True)\n",
"rfmod = rfmod.fit(X = traindata.ix[:, 2:], y = traindata.diagnosis)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Misclassification rate: 0.0265486725664\n"
]
}
],
"source": [
"# Performance of model (misclassification rate):\n",
"predictions = rfmod.predict(testdata.ix[:, 2:])\n",
"print('Misclassification rate:', \n",
" np.sum(testdata.diagnosis != predictions) / testdata.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"fractal_dimension_mean 0.136293\n",
"concave_points_worst 0.116226\n",
"concavity_worst 0.105107\n",
"concave_points_sd_error 0.101049\n",
"perimeter_sd_error 0.089722\n",
"texture_mean 0.055766\n",
"radius_mean 0.052598\n",
"radius_worst 0.048847\n",
"perimeter_mean 0.042853\n",
"symmetry_worst 0.034778\n",
"smoothness_sd_error 0.033915\n",
"symmetry_sd_error 0.020145\n",
"concave_points_mean 0.018856\n",
"area_sd_error 0.015977\n",
"radius_sd_error 0.014664\n",
"texture_worst 0.013990\n",
"smoothness_mean 0.013094\n",
"symmetry_mean 0.011713\n",
"fractal_dimension_sd_error 0.011220\n",
"compactness_sd_error 0.008004\n",
"fractal_dimension_worst 0.007275\n",
"concavity_sd_error 0.006577\n",
"texture_sd_error 0.006564\n",
"compactness_worst 0.005569\n",
"area_mean 0.005470\n",
"compactness_mean 0.005398\n",
"smoothness_worst 0.005177\n",
"area_worst 0.004815\n",
"perimeter_worst 0.004506\n",
"concavity_mean 0.003834\n",
"dtype: float64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# The more the accuracy of the random forest decreases due to the \n",
"# permutation of a single variable, the more important that\n",
"# variable is deemed.\n",
"importances = pd.Series(rfmod.feature_importances_, index = data.columns[2:])\n",
"importances.sort_values(ascending = False)"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
" decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',\n",
" max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
" tol=0.001, verbose=False)"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# SVM\n",
"# Baseline performance with default hyperparameters\n",
"svc = svm.SVC()\n",
"svc.fit(X = traindata.ix[:, 2:], y = traindata.diagnosis)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Misclassification rate: 0.442477876106\n"
]
}
],
"source": [
"predictions = svmmod.predict(testdata.ix[:, 2:])\n",
"print('Misclassification rate:', \n",
" np.sum(testdata.diagnosis != predictions) / testdata.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Bayesian optimization, optimizing parameters in log space.\n",
"# Objective is Gini index from cross-validation.\n",
"nfold = 3\n",
"def fit_svc_val(x):\n",
" x = np.atleast_2d(np.exp(x))\n",
" fs = np.zeros((x.shape[0],1))\n",
" for i in range(x.shape[0]):\n",
" svc = svm.SVC(C=x[i,0], gamma=x[i,1])\n",
" fs[i] = np.mean(cross_val_score(svc, traindata.ix[:, 2:], \n",
" traindata.diagnosis, \n",
" cv=nfold, n_jobs=-1)) \n",
" return fs"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"domain = [{'name': 'C', 'type': 'continuous', 'domain': (-4.,7.)},\n",
" {'name': 'gamma', 'type': 'continuous', 'domain': (-12.,-2.)}]"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The set cost function is ignored! LBC acquisition does not make sense with cost.\n"
]
}
],
"source": [
"opt = GPyOpt.methods.BayesianOptimization(f = fit_svc_val, # function to optimize \n",
" domain = domain, # box-constrains of the problem\n",
" acquisition_type ='LCB', # LCB acquisition\n",
" acquisition_weight = 0.1)"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nkr3Mx/OpAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10322ea58>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# it may take a minute\n",
"opt.run_optimization(max_iter=70)\n",
"opt.plot_convergence()"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Misclassification rate: 0.433628318584\n"
]
}
],
"source": [
"# Predict using best parameters found:\n",
"x_best = np.exp(opt.X[np.argmin(opt.Y)])\n",
"svc = svm.SVC(C=x_best[0], gamma=x_best[1])\n",
"svc.fit(traindata.ix[:, 2:], traindata.diagnosis)\n",
"Y_test_pred = svc.predict(testdata.ix[:, 2:])\n",
"print('Misclassification rate:', \n",
" np.sum(testdata.diagnosis != Y_test_pred) / testdata.shape[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Explanation:\n",
"\n",
"Technical Audiences:\n",
"\n",
"One of the big limitations of my analysis is that, while it provides a lot of information about causation and the random forest provides a lot of predictive accuracy, it doesn’t provide any information about causation. To solve this problem, I would either want to conduct randomized controlled trials or (if that’s infeasible) try to identify causality by finding instrumental variables and using a method called Generalized Method of Moments.\n",
"\n",
"Another limitation is that we don’t know if our data is a representative sample. If it is not a representative sample, the predictive accuracy of the model on new data is affected by the amount of bias in the sample. If the sample is heavily biased in some way, the model is misleading and maybe even dangerous to use. More information about where the data came from and how it was collected is needed to determine whether we can draw any generalizable conclusions from it at all. To solve this, I would want to find out who collected the data and how. Then I would recollect the data or clean it as needed.\n",
"\n",
"Non-Technical Audiences:\n",
"\n",
"My analysis begins by identifying the features that are most predictive of a malignant tumor. I did this by computing the goodness-of-fit of a linear regression of the diagnosis on each of the features individually. Tumor malignancy is predicted via many factors, but some of the most important ones are fractal_dimension_mean, concave_points_sd_error, and concavity_worst. I then computed the mean and median smoothness and compactness for benign and malignant tumors. The difference was statistically significant for all of them. \n",
"\n",
"The model that ended up performing best and that should be used was the random forest model. The way it works is as follows. Think of an upside-down tree with branches that split only two ways at each split. The prediction starts at the top of the tree. At each split, it decides whether to go right or left according to a condition on one of the features (i.e., whether fractal_dimension_mean > 10). It proceeds down the tree until reaching the bottom, at which point it makes a prediction. The random forest is a collection of 500 of these trees, and the resulting prediction on new data is the result of a majority-vote among all of the individual trees. The model misclassifies only about 2.7% of new observations."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#Part 2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Student Sample 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"My comments:\n",
"\n",
"The code doesn't run. The following things should be fixed to get it to run:\n",
"- It should say \"from sklearn.linear_model import LinearRegression\"\n",
"- \"d\" should be \"data\" to match up with the later lines\n",
"- Cross-validation requires you to split up the training set into at least 2 parts to test out-of-sample. So you need to set cv>1. I would recommend cv=10.\n",
"\n",
"There was also a warning. To fix this:\n",
"- mean_absolute_error was renamed to neg_mean_absolute_error and will be deprecated soon, so should change this.\n",
"- sklearn.cross_validation.cross_val_score might be deleted in a future release, so should instead use sklearn.model_selection.cross_val_score\n",
"\n",
"Most of the ContractType's are missing, which you can see by running \"sum(pd.isnull(data.ContractType)) / data.shape[0]\". For these missing values, we don't know whether they're full time or part time, so you shouldn't use them to train the model. \n",
"\n",
"Also, one of the assumptions of ordinary least squares (i.e., linear regression), is that the regressors are linearly independent. Thus, you have to leave off one of the categories when converting to dummies.\n",
"\n",
"I also should mention that mean absolute error (MAE) is not the best cross-validation metric to use here because it doesn't take the variance into account. The linear regression model minimizes the mean squared error (MSE) by construction, so you should do cross-validation using the MSE. If you really want to use a linear model to predict the MAE out-of-sample, you should use the least absolute deviations (LAD) model, which is constructed to minimize the MAE and can be imported via \"statsmodels.regression.quantile_regression import QuantReg\". \n",
"https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/quantile_regression.ipynb\n",
"https://en.wikipedia.org/wiki/Least_absolute_deviations\n",
"\n",
"Also, just as general practice, you should import all libraries at the beginning of the code. This prevents you from accidentally importing a library twice, which was done here, and makes it easier to read. There were also some unnecessary libraries that were imported.\n",
"\n",
"The code corrected for errors and warnings is below:"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-11193.3080865\n"
]
}
],
"source": [
"#!/usr/bin/env python\n",
"\n",
"import pandas as pd\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"# Load data\n",
"data = pd.read_csv('../data/train.csv')\n",
"\n",
"# Remove rows where ContractType is missing\n",
"data = data[pd.notnull(data['ContractType'])]\n",
"\n",
"# Setup data for prediction\n",
"x1 = data.SalaryNormalized\n",
"x2 = pd.DataFrame(pd.get_dummies(data.ContractType).ix[:, 0])\n",
"\n",
"# Setup model\n",
"model = LinearRegression()\n",
"\n",
"# Evaluate model\n",
"scores = cross_val_score(model, x2, x1, cv=10, scoring='neg_mean_absolute_error')\n",
"print(scores.mean())"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Student Sample 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"My comments:\n",
"\n",
"warnings:\n",
"- sklearn.cross_validation.cross_val_score might be deleted in a future release, so should instead use sklearn.model_selection.cross_val_score\n",
"- mean_absolute_error was renamed to neg_mean_absolute_error and will be deprecated soon, so should change this.\n",
"\n",
"Most of the ContractType's are missing, which you can see by running \"sum(pd.isnull(data.ContractType)) / data.shape[0]\". For these missing values, we don't know whether they're full time or part time, so you shouldn't use them to train the model. \n",
"\n",
"Also, one of the assumptions of ordinary least squares (i.e., linear regression), is that the regressors are linearly independent. Thus, you have to leave off one of the categories when converting to dummies.\n",
"\n",
"I also should mention that mean absolute error (MAE) is not the best cross-validation metric to use here because it doesn't take the variance into account. The linear regression model minimizes the mean squared error (MSE) by construction, so you should do cross-validation using the MSE. If you really want to use a linear model to predict the MAE out-of-sample, you should use the least absolute deviations (LAD) model, which is constructed to minimize the MAE and can be imported via \"statsmodels.regression.quantile_regression import QuantReg\". \n",
"https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/quantile_regression.ipynb\n",
"https://en.wikipedia.org/wiki/Least_absolute_deviations\n",
"\n",
"Also, numpy doesn't need to be imported."
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-11288.4524487\n"
]
}
],
"source": [
"#!/usr/bin/env python\n",
"\n",
"import pandas as pd\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"# Load data\n",
"data = pd.read_csv('../data/train.csv')\n",
"\n",
"# Remove rows where ContractType is missing\n",
"data = data[pd.notnull(data['ContractType'])]\n",
"\n",
"# Setup data for prediction\n",
"y = data.SalaryNormalized\n",
"X = pd.get_dummies(data.ContractType)\n",
"\n",
"# Setup model\n",
"model = LinearRegression()\n",
"\n",
"# Evaluate model\n",
"scores = cross_val_score(model, X, y, cv=5, scoring='neg_mean_absolute_error')\n",
"print(scores.mean())"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment