【挖掘模型】:Python-决策树-对销售高低的影响因素

数据源:sales_data.xls

【挖掘模型】:Python-决策树-对销售高低的影响因素_第1张图片
sales_data.xls

代码结果:

【挖掘模型】:Python-决策树-对销售高低的影响因素_第2张图片
决策树模型

源代码

    # 比较简陋,没有决策树剪枝
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数据分析与挖掘实战》

你可能感兴趣的:(【挖掘模型】:Python-决策树-对销售高低的影响因素)