DecisionTreeClassifier与红酒数据集
1.重要参数
criterion
Criterion这个参数正是用来决定不纯度的计算方法的。sklearn提供了两种选择:
1)输入”entropy“,使用信息熵(Entropy)
2)输入”gini“,使用基尼系数(Gini Impurity)
不填默认基尼系数,填写entropy使用信息增益通常就使用基尼系数,数据维度很大,噪音很大时使用基尼系数。维度低,数据比较清晰的时候,信息熵和基尼系数没区别。当决策树的拟合程度不够的时候,使用信息熵
random_state & splitter
random_state用来设置分枝中的随机模式的参数,默认None,在高维度时随机性会表现更明显,低维度的数据随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来。
splitter是用来控制决策树中的随机选项的,有两种输入值。
输入”best",会优先选择更重要的特征进行分枝。
输入“random",树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。可防止过拟合。
max_depth
限制树的最大深度,超过设定深度的树枝全部剪掉。这是用得最广泛的剪枝参数,在高维度低样本量时非常有效。建议从max_depth = 3开始尝试,看看拟合的效果再决定是否增加设定深度,可以有效限制过拟合。
min_samples_leaf & min_samples_split
min_samples_leaf 限制一个子节点的分支至少包含多少个样本。
建议从min_samples_leaf = 5 开始检测拟合度进行调参。
max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃,在不知道决策树中的各个特征的重要性时,可能会导致模型学习不足。
min_impurity_decrease
min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分枝不会发生
2.进行红酒数据集的训练
作出回归树
from sklearn import tree # 导入树
from sklearn.datasets import load_wine # 生成数据集的模块
from sklearn.model_selection import train_test_split # 训练集测试集分类
import pandas as pd
import matplotlib.pyplot as plt
import graphviz # 用于画出决策树
# 实例化数据
wine = load_wine()
# 使用pandas转化为表的形式
table = pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],