決策樹分類預測過程可視化
開始前的準備工作
首先導入所需庫文件,numpy,pandas用於數值處理,DictVectorizer用於特徵處理,graphviz用於模型可視化。
#導入所需庫文件
import numpy as np
import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from sklearn import cross_validation
from sklearn import tree
import graphviz
導入所需的數據文件,用於訓練和評估模型表現。
#導入數據表
test=pd.DataFrame(pd.read_csv( TEST_ML_v2.csv ,header=0,encoding= GBK ))
特徵處理
第二步,對特徵進行處理。
#特徵處理
X_df=test[[ City , Item category , Period , Gender , Age , Market channels , Self-agent , Category , Loan channels ]]
X_list=X_df.to_dict(orient="records")
vec = DictVectorizer()
X=vec.fit_transform(X_list)
Y=np.array(test[ Status ])
劃分訓練集和測試集數據。
#劃分訓練集和測試集數據
X_train,X_test,y_train,y_test=cross_validation.train_test_split(X.toarray(),Y,test_size=0.4,random_state=0)
訓練模型並進行預測
使用訓練集數據對決策樹模型進行訓練,使用測試集數據評估模型表現。
#訓練模型
clf = tree.DecisionTreeClassifier(max_depth=5)
clf=clf.fit(X_train,y_train)
clf.score(X_test,y_test)
簡單對測試集的第一組特徵進行預測,結果與實際值相符。
#對測試集數據進行預測
clf.predict(X_test[0]),y_test[0]
(array([ Charged Off ], dtype=object), Charged Off )
查看具體的分類概率值。
#查看分類概率
clf.predict_proba(X_test[0])
array([[ 1., 0.]])
決策樹分類預測可視化
第三步,對決策樹的分類預測過程進行可視化,首先查看分類結果及特徵的名稱。
#獲取分類名稱
clf.classes_
array([ Charged Off , Fully Paid ], dtype=object)
#獲取特徵名稱
vec.get_feature_names()
[ Age ,
Category=Car ,
Category=Digital ,
Category=Jewelery ,
Category=Luxury ,
Category=Watch ,
Period=1 period ,
Period=2 period ,
Period=3 period ,]
對決策樹進行可視化,feature_names為特徵名稱,class_names為分類結果名稱。
#決策樹可視化
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=vec.get_feature_names(),
class_names=clf.classes_,
filled=True, rounded=True,
special_characters=True)
graph = graphviz.Source(dot_data)
graph
將分類結果保存為PDF格式文檔。
#導出PDF文檔
graph.render("test_e1")
END


TAG:藍鯨的網站分析筆記 |