《统计学习方法》P59决策树绘制-sklearn版本

版权声明:本文为博主原创文章,可以随便转载 https://blog.csdn.net/appleyuchi/article/details/82951479

原始数据集见:
https://blog.csdn.net/ruggier/article/details/78756447
这个数据集的意思是:
因为银行怕贷款申请者还不起贷款,所以要判断贷款者的各种情况,以便绝对是否对贷款申请者发放贷款。

因为使用sklearn需要数字类型的数据,不能是字符串数据,所以下面对原始数据集进行转化。

对照关系如下:
#年龄:

青年:0

中年:1

老年:2

#有工作:1
#没工作:0

#有自己的房子:1
#没有自己的房子:0

信贷情况:

一般:0

好:1

非常好:2

加粗样式

P59的数据集lihang_p59_digit.csv如下:
ID 年龄 有工作 有自己的房子 信贷情况 类别
1 0 0 0 0 0
2 0 0 0 1 0
3 0 1 0 1 1
4 0 1 1 0 1
5 0 0 0 0 0
6 1 0 0 0 0
7 1 0 0 1 0
8 1 1 1 1 1
9 1 0 1 2 1
10 1 0 1 2 1
11 2 0 1 2 1
12 2 0 1 1 1
13 2 1 0 1 1
14 2 1 0 2 1
15 2 0 0 0 0

然后是构建决策树模型test.py

#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

from sklearn import tree
import sys
import os       
import numpy as np

# 数据属性:年龄、有工作、有自己的房子、信贷情况、类别(意思是是否接受该申请者的申请)

import pandas as pd
obj=pd.read_csv('lihang_p59_digit.csv')
#下面开始,行数和列数都是从1开始数起来

raw_data=np.array(obj.iloc[0:15,1:5]).tolist()#行范围[0,15),列范围(1,5]
print"raw_data=",raw_data 
label=np.array(obj.iloc[0:15,5:6]).tolist()    #行范围[0,15),列范围是(5,6]
print "label=",label
print"-----------"
print"type(raw_data)=",type(raw_data)
print"type(label)=",type(label)





print"-----------------------------------------------------------------"
clf = tree.DecisionTreeClassifier(criterion="entropy")
print"------------------------查看下类型-----------------------------------------"

data=np.array(raw_data)
print"data=",data
clf_tree= clf.fit(raw_data,label)

with open("lihang_p59_dot", 'w') as f:
   dot_data = tree.export_graphviz(clf_tree, 
                                    out_file=f,  
                                    feature_names=['年龄', '有工作','有自己的房子','信贷情况'],
                                    class_names=["否","是"],  
                                    filled=True, rounded=True, 
                                    special_characters=True) 

运行方法:
python test.py
dot -Tpdf lihang_p59_dot -o lihang_p59_dot.pdf

打开lihang_p59_dot.pdf,图形如下:
在这里插入图片描述
这个图和书上的P64的图5.5是一致的。
稍微做下解释:
这里右下角samples=3的意思是“没有房子”、“有工作”、“类别(是)”的数据总共有3条

猜你喜欢

转载自blog.csdn.net/appleyuchi/article/details/82951479