代码来源:Python数据分析与挖掘实战
分析数据:
#-*- coding: utf-8 -*-
#使用ID3决策树算法预测销量高低
import pandas as pd
from sklearn.tree import DecisionTreeClassifier as DTC
from sklearn.tree import export_graphviz #跨平台的、基于命令行的绘图工具
from sklearn.externals.six import StringIO
filename = '../data/sales_data.xls'
data = pd.read_excel(filename, index_col=u'序号') #设置序号为索引项,不然会报错
#数据是类别标签,要将它转换为数据
#用1来表示'好','是','高'这三个属性,用-1来表示'坏','否','低'
data[data==u'好'] = 1 #将数据中为好的值修改为1
data[data==u'是'] = 1
data[data==u'高'] = 1
data[data!=1] = -1 #到此处所有值不是1就是-1
#print(data)
x = data.iloc[:,:3].as_matrix().astype(int) #取天气、是否周末、是否有促销3列数据作为自变量
y = data.iloc[:,3].as_matrix().astype(int) #取销量数据作为因变量
dtc = DTC(criterion='entropy') #建立决策树模型,基于信息熵
dtc.fit(x, y) #训练模型
x = pd.DataFrame(x)
with open('tree.dot', 'w') as f:
f = export_graphviz(dtc, feature_names=x.columns, out_file=f)
输出:
生成的tree.dot文件在终端使用gedit打开,修改如下:
命令行下执行:
dot -Tpdf tree.dot -o tree.pdf
dot -Tpng tree.dot -o tree.png
然后使用: eog tree.png打开png文件,使用evince tree.pdf打开pdf文件