赞
踩
决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。
最初的问题所在的地方叫做根节点,在得到结论前的每一个问题都是中间节点,而得到的每一个结论(动物的类别)都叫做叶子节点。
备注:树干就是根节点只能向外延展,树枝是中间节点,树枝上还能长树枝所以既能从根节点接收数据也能向他延展出去的树枝输出数据。叶子是叶子节点,叶子上不能长叶子了,所以只有进没有出。
决策树算法的核心是要解决两个问题:
1)如何从数据表中找出最佳节点和最佳分枝?
2)如何让决策树停止生长,防止过拟合?
(什么是过拟合可以看 数据科学入门_第十一章_机器学习)
sklearn中决策树的类都在”tree“这个模块之下。这个模块总共包含五个类
tree.DecisionTreeClassifier 分类树
tree.DecisionTreeRegressor 回归树
tree.export_graphviz 将生成的决策树导出为DOT格式,画图专用
tree.ExtraTreeClassifier 高随机版本的分类树
tree.ExtraTreeRegressor 高随机版本的回归树
sklearn的基本建模流程
流程对应代码
from sklearn import tree #导入需要的模块
clf = tree.DecisionTreeClassifier() #实例化
clf = clf.fit(X_train,y_train) #用训练集数据训练模型
result = clf.score(X_test,y_test) #导入测试集,从接口中调用需要的信息
为了要将表格转化为一棵树,决策树需要找出最佳节点和最佳的分枝方法,对分类树来说,衡量这个“最佳”的指标叫做“不纯度”。通常来说,不纯度越低,决策树对训练集的拟合越好。现在使用的决策树算法在分枝方法上的核心大多是围绕在对某个不纯度相关指标的最优化上。
Criterion这个参数正是用来决定不纯度的计算方法的。sklearn提供了两种选择:
1)输入”entropy“,使用信息熵(Entropy)
2)输入”gini“,使用基尼系数(Gini Impurity)
备注:在实际使用中,信息熵和基尼系数的效果基
本相同。通常就使用基尼系数数据维度很大,噪音很大时使用基尼系数维度低,数据比较清晰的时候,信息熵和基尼系数没区别当决策树的拟合程度不够的时候,使用信息熵两个都试试,不好就换另外一个
实际操作
导入需要的算法库和模块
from sklearn import tree #导入决策树模块
from sklearn.datasets import load_wine #导入红酒数据集
from sklearn.model_selection import train_test_split #导入区分训练集和测试集的模块
探索数据
wine = load_wine() #数据实例化
wine.data.shape #查看数据形状
wine.target #查看数据标签
#如果wine是一张表,应该长这样:
import pandas as pd #导入pandas库
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1) #连接数据
wine.feature_names
wine.target_names
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。