决策树分类预测过程可视化

首先导入所需库文件,numpy,pandas用于数值处理,DictVectorizer用于特征处理,graphviz用于模型可视化。 导入所需的数据文件,用于训练和评估模型表现。
首页 新闻资讯 行业资讯 决策树分类预测过程可视化

[[203082]]

开始前的准备工作

首先导入所需库文件,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
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

导入所需的数据文件,用于训练和评估模型表现。

复制

#导入数据表  test=pd.DataFrame(pd.read_csv('TEST_ML_v2.csv',header=0,encoding='GBK'))
  • 1.

  • 2.

  • 3.

特征处理

第二步,对特征进行处理。

复制

#特征处理  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'])划分训练集和测试集数据。
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

划分训练集和测试集数据

复制

X_train,X_test,y_train,y_test=cross_validation.train_test_split(X.toarray(),Y,test_size=0.4,random_state=0)
  • 1.

训练模型并进行预测

使用训练集数据对决策树模型进行训练,使用测试集数据评估模型表现。

复制

#训练模型  clf = tree.DecisionTreeClassifier(max_depth=5)  clf=clf.fit(X_train,y_train)  clf.score(X_test,y_test)  0.85444078947368418
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

简单对测试集的***组特征进行预测,结果与实际值相符。

复制

#对测试集数据进行预测  clf.predict(X_test[0]),y_test[0]  (array(['Charged Off'], dtype=object), 'Charged Off')
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

查看具体的分类概率值。

复制

#查看分类概率  clf.predict_proba(X_test[0])  array([[ 1., 0.]])
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

决策树分类预测可视化

第三步,对决策树的分类预测过程进行可视化,首先查看分类结果及特征的名称。

复制

#获取分类名称  clf.classes_  array(['Charged Off', 'Fully Paid'], dtype=object)
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

对决策树进行可视化,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
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.


 

 

将分类结果保存为PDF格式文档。

复制

#导出PDF文档  graph.render("test_e1")
  • 1.

  • 2.