【挖掘模型】:Python-决策树-对销售高低的影响因素
2017-05-21 本文已影响78人
dataheart
sales_data.xls数据源:sales_data.xls
决策树模型代码结果:
源代码
# 比较简陋,没有决策树剪枝
import os
os.getcwd()
os.chdir('D:\\完成的任务')
import pandas as pd
#参数初始化
inputfile = 'F:/python 数据挖掘分析实战/Data/sales_data.xls'
data = pd.read_excel(inputfile, index_col = u'序号')
#数据是类别的标签,要将它转换为数据
# 1 代表 好 是 高
# -1 代表 坏 否 低
data[data == u'好'] = 1
data[data == u'是'] = 1
data[data == u'高'] = 1
data[data != 1] = -1 # 牛逼,将数据集中的非选项转化为-1
x = data.iloc[:,:3].as_matrix().astype(int)
y = data.iloc[:,3].as_matrix().astype(int)
from sklearn.tree import DecisionTreeClassifier as DTC
dtc = DTC(criterion='entropy') # 建立决策树模型,基于熵
dtc.fit(x, y) # 训练模型
# 导入相关函数,可视化决策树
# 导出的结果是一个dot文件(在系统默认路劲),需要安装Graphviz才能将它住哪华为PDF或png格式
from sklearn.tree import export_graphviz
x = pd.DataFrame(x)
from sklearn.externals.six import StringIO
with open("tree.dot", 'w') as f:
f = export_graphviz(dtc, feature_names = x.columns, out_file = f)
# 需要修改格式
'''
digpraph Tree {
edge[fontname = 'SimHei'];
node[fontname = 'SimHei']; # 添加这两行,指定中文字体(黑体)
0 [label ="是否周末 <= 0.0000\nentropy = 0.997502546369\nsamples = 34",shape = 'box'];
1 [label ="是否有促销 <= 0.0000\nentropy = 0.934068055375\nsamples = 20",shape = 'box'];
}
'''
# 将它保存为UTF-8格式,为了进一步将它转化为可视化格式,需要安装Graphviz(跨平台的,基于命令行的绘图工具),然后命令行中加如下编译方式
# dot -Tpdf tree.dot -o tree.pdf
# dot -Tpng tree.dot -o tree.pdf
# 开始->所有程序->Grapgviz->gvedit.exe 将DOT中的格式粘贴进去或者修改一下
参考资料:《Python数据分析与挖掘实战》