概述
决策树是一种非参数的有监督学习方法,他能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构呈现出这些规则,以解决分类和回归问题。
决策树算法的核心是解决两个问题
- 如何从数据表中找出最佳节点和最佳分支
- 如何让决策树停止生长,防止过拟合
sklearn中的决策树
sklearn中的决策树都在sklearn.tree模块下
类名 | 作用 |
---|---|
tree.DecisionTreeClassifier | 分类树 |
tree.DecisionTreeRegressor | 回归树 |
tree.export_graphviz | 将生成的决策树导出为DOT格式,画图使用 |
tree.ExtraTreeClassifier | 高随机版本的分类树 |
tree.ExtraTreeRegressor | 高随机版本的回归树 |
基本建模流程
重要参数
参数 | criterion |
---|---|
如何影响模型 | 确定不纯度计算方法,找出最佳节点和最佳分支,不纯度越低,决策树对训练集的拟合度越好 |
可选值 | gini–基尼系数(默认),entropy–信息增益 |
怎样选择 | 通常使用基尼(gini)系数,数据维度很大噪音很大使用基尼系数,维度低,数据比较清晰时gini和entropy没有区别。当决策树拟合度不够时使用entropy。最坏的情况,两个都试试选择好的 |
- random_state :用来设置分支中随机模式的参数,默认为None,高维度时随机性会表现得很明显,低纬度可能不会和明显
- splitter:用来控制决策树中的随机选项,输入为best时,决策树在分支时虽然随机,但是还是会优先选择更重要的特征来进行分支(特征重要性可以通过feature_importances_ 查看);输入random决策树在分支时会更加随机,训练集的拟合很可能会降低
from sklearn.tree import DecisionTreeClassifier
# 使用红酒数据集联系决策树
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
wine = load_wine()
# 数据集分割
X_train, X_test, y_train, y_test = train_test_split(wine['data'], wine['target'], test_size=0.3, random_state=1)
##### 训练模型
dtcf