机器学习 ||《菜菜的sklearn机器学习》笔记——1 决策树
Criterion两个随机性相关的参数(random_state、solitter)四个剪枝参数(max_depth、min_sample_leaf、max_feature、min_impurity_decrease)
·
1 DecisionTreeClassifier 决策树
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();
# wine.data 特征 wine.target 标签 ... 如下
# wine.data_name 特征的名字 wine.data.target 标签的名字
Xtrain ,Xtest ,Ytrain ,Ytest= train_test_split(wine.data,wine.target,test_size=0.3)
#分出训练集和测试集
#test_size= ___取30%作测试集 70%作训练集
#前面x、y、train、test的顺序不可更改,不然结果不知道会成怎么样
clf = tree.DecisionTreeClassifier(criterion = "gini"
,random_state=3
,splitter="best")
clf = clf.fit(Xtrain,Ytrain) #训练模型
score = clf.score(Xtest,Ytest)#使用接口导出我们所需要的分数
#↓把树画出来
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']
dot_data= tree.export_graphviz(clf
,feature_names=feature_name #建好的模型名字
,class_names=['琴酒','雪莉','贝尔摩德']
,filled=True #用颜色来区分不同的酒 颜色越浅 该节点不纯度越高
,rounded=True) #圆角
graph=graphviz.Source(dot_data)
criterion 决定不纯度计算方法
- “entropy” 信息熵(父节点的信息熵-子节点的信息熵)
- “gini” 基尼系数
不纯度越低,决策树对训练集的拟合越好
random_state 设置分枝中的随机模式的参数
- 输入同一整数,会一直生成同一棵树,保持模型的稳定
splitter= “best” / “random”
- best——优先选择更重要特征放。
- random——更加随机,树会更深,训练集拟合度会降低,是一种防止过拟合的方法。
过拟合:
- 模型在训练集上表现良好,在测试集上表现糟糕。即当模型对训练数据有过于优秀的解释性,找出的规则必定是包含训练样本中的噪声
#我们的树对训练集的拟合程度如何?
score_train=clf.score(Xtrain,Ytrain)
score_train
#>>>1.0
#相当于100% 处于一种过拟合的状态
特征重要性
- 为什么上面只体现出部分特征?
- 取决于特征重要性,数值越大越重要
clf.feature_importances_
#[*zip(feature_name,clf.feature_importances_)]
剪枝参数
- 剪枝策略对决策树的影响巨大,正确的策略是优化策略树算法的核心。
-
max_depth
限制树的最大深度,超过设定深度的树枝全部剪掉
运用最广泛的剪枝参数,对高纬度低样本量时非常有效。实际运用时建议先从=3开始,看看拟合效果再决定是否增设深度。 -
min_sample_leaf & min_sample_split
一个节点 在分枝后 每个子节点必须 包含至少min_sample_leaf个子节点,否则,分枝不会发生;或者会朝着满足 每个子节点 都包含 min_sample_leaf个样本的方向去发生。
一般搭配max_depth使用,在回归树有奇效,让模型变光滑。建议从=5开始使用min_sample_split限定,一个节点 必须要包含至少 min_sample_split个训练样本,才允许分枝。否则,不分枝。
-
max_features & min_impurity_decrease
max_features限制分枝时考虑的特征个数,超过限制个数则会被舍弃,与max_depth异曲同工。用来限制高维度数据的过拟合的修剪参数,但比较暴力,不建议。
min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分枝不会发生。
2 DecisionTreeRegressor 回归树
无不纯度 连续性变量
- mse 均方误差 父节点子节点误差的差额 最小化L2损失
- friedman_mse 费尔德曼均方误差
- mae 绝对平均误差
总结
七个参数:
- Criterion
- 两个随机性相关的参数(random_state、solitter)
- 四个剪枝参数(max_depth、min_sample_leaf、max_feature、min_impurity_decrease)
一个属性:
- feature_importances_
四个接口:
- fit
- score
- apply
- predict
更多推荐




所有评论(0)