简单的python决策树案例

您所在的位置:网站首页 决策树计算例题 简单的python决策树案例

简单的python决策树案例

#简单的python决策树案例| 来源: 网络整理| 查看: 265

机器学习入门——决策树的实例

写文章的目的是为了巩固所学,和方便回顾查找。如有讲错的地方,欢迎指出,谢谢。

我们的数据集 tree(1).csv 长这样:

RIDageincomestudentcredit_ratingbuy1youthhighnofairno2youthhighnoexcellentno3middle_agedhighnofairyes4seniormediumnofairyes5seniorlowyesfairyes6seniorlowyesexcellentno7middle_agedlowyesexcellentyes8youthmediumnofairno9youthlowyesfairyes10seniormediumyesfairyes11youthmediumyesexcellentyes12middle_agedmediumnoexcellentyes13middle_agedhighyesfairyes14seniormediumnoexcellentno #导入必要的库 from sklearn.feature_extraction import DictVectorizer import csv from sklearn import preprocessing from sklearn import tree #加载数据文件 load_file = open(r'tree(1).csv') reader = csv.reader(load_file) #载入数据 headers = reader.__next__() #读取第一行 print(headers) #试着打印结果,也可以作为指标加载数据是否成功

打印结果:

['RID', 'age', 'income', 'student', 'credit_rating', 'class_buys_computer']

观察我们的数据,发现数据中的特征,例如:age:youth ..等,导入无法识别,因此需要对特征进行抽取,用到了DictVectorizer DictVectorizer 使用可以参考这篇文章

说明: DictVectorizer的处理对象是符号化(非数字化)的但是具有一定结构的特征数据,如字典等,将符号转成数字0/1表示。

lables = [] #用于存储标记实例,也就是本例中的是否购入电脑 feature = [] #用于存储特征 #reader返回的值是csv文件中每行的列表,将每行读取的值作为列表返回 for row in reader: lables.append(row[len(row)-1]) features = {} for each in range(1,len(row)-1): features[headers[each]] = row[each] feature.append(features) vec = DictVectorizer() x = vec.fit_transform(feature).toarray() print('特征提取后的X'+'\n'+str(x)) # print(headers) lab = preprocessing.LabelBinarizer() y = lab.fit_transform(lables) print('Y'+'\n'+str(y))

输出:

特征提取后的X [[0. 0. 1. 0. 1. 1. 0. 0. 1. 0.] [0. 0. 1. 1. 0. 1. 0. 0. 1. 0.] [1. 0. 0. 0. 1. 1. 0. 0. 1. 0.] [0. 1. 0. 0. 1. 0. 0. 1. 1. 0.] [0. 1. 0. 0. 1. 0. 1. 0. 0. 1.] [0. 1. 0. 1. 0. 0. 1. 0. 0. 1.] [1. 0. 0. 1. 0. 0. 1. 0. 0. 1.] [0. 0. 1. 0. 1. 0. 0. 1. 1. 0.] [0. 0. 1. 0. 1. 0. 1. 0. 0. 1.] [0. 1. 0. 0. 1. 0. 0. 1. 0. 1.] [0. 0. 1. 1. 0. 0. 0. 1. 0. 1.] [1. 0. 0. 1. 0. 0. 0. 1. 1. 0.] [1. 0. 0. 0. 1. 1. 0. 0. 0. 1.] [0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]] 特征提取后的Y: [[0] [0] [1] [1] [1] [0] [1] [0] [1] [1] [1] [1] [1] [0]]

建立决策树模型

result = tree.DecisionTreeClassifier(criterion='entropy') #使用特征选择标准为entropy,默认为基尼系数”gini” result.fit(x,y) # print('result'+str(result)) with open('tree1.dot','w') as f: f = tree.export_graphviz(result,out_file=f,feature_names=vec.get_feature_names()) #保存成文件

关于特征标准选择可以参考这篇文章

可以使用Graphviz工具可视化决策树(需要配置成环境变量才可以在控制台使用) 命令:dot -Tpdf tree1.dot -o pic.pdf 结果如下: 这里写图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3