开始前的准备工作
首先导入所需库文件,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.