In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn import cross_validation
%matplotlib inline
city_data = pd.read_csv('USData_ClassProject1.csv')

In [2]:
city_data['ElectionResults'][(city_data.ElectionResults == 'blue')] = 1
city_data['ElectionResults'][(city_data.ElectionResults == 'red')] = 0
city_data['ElectionResults'] = city_data['ElectionResults'].convert_objects(convert_numeric=True)
results = city_data['ElectionResults']
city_data.drop(['State', 'City', 'ElectionResults'], inplace=True, axis=1)
city_data.dropna(inplace=True)


-c:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
-c:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

In [3]:
X_train, X_test, Y_train, Y_test = cross_validation.train_test_split(city_data, results, test_size = 0.9, random_state=1)

In [4]:
from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train, Y_train)

accuracy = clf.score(X_test, Y_test)
print("Accuracy: %0.2f" % (accuracy))


Accuracy: 0.82

In [5]:
import matplotlib.pylab as plt
plt.scatter(city_data.AvgLowTemp, results)


Out[5]:
<matplotlib.collections.PathCollection at 0x10ac78710>

In [6]:
from sklearn.metrics import confusion_matrix
Y_pred = clf.predict(X_test)
cm = confusion_matrix(Y_test, Y_pred)
print("Confusion Matrix:")
print(cm)


Confusion Matrix:
[[ 688  233]
 [ 189 1180]]

In [6]: