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)