ayush3504 icon

Python DT Classwork (Wisconsin BC)

ayush3504 | PRO | 02/09/16 08:33:08 PM UTC | 0 ⭐ | 285 👁️ | Never ⏰ | []
Python |

1.84 KB

|

None

|

0 👍

/

0 👎

import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.cross_validation import train_test_split
from sklearn import datasets
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
from sklearn import preprocessing
 
#Pull in breast cancer data
bc=pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',header=None)
 
#Remove question marks and replace with NaN
bc=bc.replace(to_replace='?',value=0)
 
#Impute medians to address NaN
imput=preprocessing.Imputer(missing_values='NaN',strategy='median')
bc=imput.fit_transform(bc)
bc=pd.DataFrame(bc)
#Review head of data
bc.head()
# 1 2 3 4 5 6 7 8 9 10
#0 5 1 1 1 2 1 3 1 1 2
#1 5 4 4 5 7 10 3 2 1 2
#2 3 1 1 1 2 2 3 1 1 2
#3 6 8 8 1 3 4 3 7 1 2
#4 4 1 1 3 2 1 3 1 1 2
 
#Drop first column
bc=bc.drop(0,1)
 
#Create trainning and testing sets
X=bc.ix[:,2:9]
Y=bc.ix[:,10]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=0)
 
#Here, we define the parameters of our tree
tree = DecisionTreeClassifier(criterion = 'entropy', max_depth=5, random_state=0)
 
# We then fit the tree to our training data 
tree.fit(X_train, Y_train)
 
# Now we visualize our tree
from sklearn.tree import export_graphviz
export_graphviz(tree, out_file='wisc.dot',feature_names=['perimeter','area','smoothness','compactness','concavity','concave points','symmetry'])
 
""" At this point go to your terminal and use the dot command to convert your .dot
file to a .png file"""
 
# Let's make a prediction
y_pred=tree.predict(X_test)
 
# Now we calculate our accuracy and create a confusion matrix of our results
print('Accuracy: %.2f' % accuracy_score(Y_test,y_pred))
confmat=confusion_matrix(y_true=Y_test, y_pred=y_pred)
print(confmat)

Comments