决策树实例

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)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 学习机器学习童鞋们应该都知道决策树是一个非常好用的算法,因为它的运算速度快,准确性高,方便理解,可以处理连续或种类...
    菜菜TsaiTsai阅读 6,915评论 0 3
  • 0x00 前言 本文是《GBDT源码分析》系列的第二篇,主要关注GBDT的元算法"决策树"在scikit-lear...
    cathyxlyl阅读 10,745评论 1 11
  • 一. 决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树。在分类问题中,表...
    YCzhao阅读 6,528评论 0 2
  • 早上还没出门,看着酒店外面阴沉沉的天,我就知道今天的油菜花不好看了。 出来才知道,是雾。 好久没有见过这么大的雾了...
    huifang963阅读 3,890评论 0 1
  • 85红印 新彊行第三天,连着吃了几天的羊肉,上火口腔开始溃疡,小肚子有点涨,今日到独门子,大家去夜市烧烤,我坚定的...
    妙圆阅读 1,020评论 0 0