決策樹分類預測過程可視化
開始前的準備工作
首先導入所需庫文件,numpy,pandas用于數(shù)值處理,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
 
導入所需的數(shù)據(jù)文件,用于訓練和評估模型表現(xiàn)。
- #導入數(shù)據(jù)表
 - 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'])劃分訓練集和測試集數(shù)據(jù)。
 
劃分訓練集和測試集數(shù)據(jù)
- X_train,X_test,y_train,y_test=cross_validation.train_test_split(X.toarray(),Y,test_size=0.4,random_state=0)
 
訓練模型并進行預測
使用訓練集數(shù)據(jù)對決策樹模型進行訓練,使用測試集數(shù)據(jù)評估模型表現(xiàn)。
- #訓練模型
 - clf = tree.DecisionTreeClassifier(max_depth=5)
 - clf=clf.fit(X_train,y_train)
 - clf.score(X_test,y_test)
 - 0.85444078947368418
 
簡單對測試集的***組特征進行預測,結果與實際值相符。
- #對測試集數(shù)據(jù)進行預測
 - 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)
 
對決策樹進行可視化,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")
 
















 
 
 














 
 
 
 