决策树实例

2020-01-09  本文已影响0人  overad
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split

import pandas as pd

import graphviz

wine = load_wine()

X_train,X_test,Y_train,Y_test = train_test_split(wine.data,wine.target,train_size=0.7,random_state=44)

#这里可以使用信息熵或者gini系数
clf = tree.DecisionTreeClassifier(criterion='entropy')
clf.fit(X_train,Y_train)
score = clf.score(X_test,Y_test)

print("DecisionTreeClassifier Score:",score)
#output:DecisionTreeClassifier Score: 0.9629629629629629

feature_names = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类', '花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']

dot_data = tree.export_graphviz(
    clf,
    #out_file='d:/dt_wine.dot',
    feature_names = feature_names,
    class_names = ['琴酒','雪莉','贝尔摩德']
    ,filled=True
    ,rounded=True
)
#这个会显示中文乱码,需要替换字体
#graph = graphviz.Source(dot_data)

#加了replace后就不会再显示中文乱码
graph = graphviz.Source(dot_data.replace("helvetica","FangSong"))

graph.view()

2.1.1 criterion
为了要将表格转化为一棵树,决策树需要找出最佳节点和最佳的分枝方法,对分类树来说,衡量这个“最佳”的指标
叫做“不纯度”。通常来说,不纯度越低,决策树对训练集的拟合越好。现在使用的决策树算法在分枝方法上的核心
大多是围绕在对某个不纯度相关指标的最优化上。
不纯度基于节点来计算,树中的每个节点都会有一个不纯度,并且子节点的不纯度一定是低于父节点的,也就是
说,在同一棵决策树上,叶子节点的不纯度一定是最低的。
Criterion这个参数正是用来决定不纯度的计算方法的。sklearn提供了两种选择:
1)输入”entropy“,使用信息熵(Entropy)
2)输入”gini“,使用基尼系数(Gini Impurity)

上一篇下一篇

猜你喜欢

热点阅读