决策树实例分析(一)
使用自带的iris数据集
1. 相关导入
- 模块的导入
# 导入决策树
from sklearn.tree import DecisionTreeClassifier
# 导入数据集
from sklearn import datasets
# 导入 分割训练集和分割测试集 ,网格搜索
from sklearn.model_selection import train_test_split,GridSearchCV
# 导入鸢尾花数据集
iris = datasets.load_iris()
- 取出 特征 和 标签,分割训练集和测试集
- 创建分类树模型
查看相应的参数:
criterion参数:衡量类别纯度的指标,默认是gini;可取值有信息熵和gini值,即entropy和gini
max_depth参数:表示最大深度,默认是None,如果是None代表这个树的深度可以是任意的,一直会扩展到所有的叶子节点都是纯的或者叶子节点都包含少于min_samples_split个样本数
min_samples_split参数:可选项,默认是2,代表区分一个内部节点的最少样本数
2. 训练与性能检测
-
训练
-
性能检测
泛化能力不足,经验集上表现良好,出现了过拟合
查看查正率,召回率 f1值
1的精确率不足:预测能力不足
2的召回率不足:预测真正正确的样本能力弱 -
检查数据
data的每一列数据的范围波动不是很大,不需要优先考虑数据的调优,实在不行的时候再考虑数据调优,先进行算法调优
3. 算法调优
-
新建一个算法进行调优
算法调优是对以下参数进行调优:
criterion参数:可选 entropy 和 gini
max_depth参数:data数据只有4个属性,所以这个树的深度最深为4层
min_samples_split参数:可选项为 2,3,4 -
查看性能
性能比上面的更好了,然后测试一下数据调优,能不能更加优化
4. 数据调优
4.1 归一化
- 创建归一化模型,进行数据的相关转化
- 新建算法模型
- 查看性能
可以发现,数据调优和上面的算法调优性能没有区别,因为data数据的范围波动不是很大,当然,在实际项目中,为了严谨性,数据调优应该归一化,标准化,正则化三种方式都进行调优,都是一样的步骤