zl程序教程

您现在的位置是:首页 >  其它

当前栏目

极简sklearn-决策树(三)

决策树 sklearn 极简
2023-09-11 14:16:57 时间

前言

上一篇中我们经过调参,把红酒数据集的准确率从88%调到94%,还算不错的成绩,但这个模型的准确率真有这么高么?

我们知道决策树有擅长和不擅长的数据集,它擅长的是对半分型数据,不擅长环形数据,而训练集是随机抽取的,有没有可能正好抽取到决策树擅长的数据导致分数虚高呢?如果更准确的评估模型的效果呢?这就是这次要讲的主角--交叉验证

交叉验证

既然随机抽取一次不可靠,那我们就把数据分成5份,第一次第一份作为测试集,剩下4份作为训练集,第二次第二份作为测试集,剩下的作为训练集,以此类推,这样就能准确评估模型效果了

交叉验证在sklearn中实现很简单,我们只需要把调完参的模型带进去就行了,需要注意的是数据不用切割,直接带入完整的,因为这个方法内部会切割数据

from sklearn import tree #导入决策树模型
from sklearn.datasets import load_wine  #导入红酒数据集
from sklearn.model_selection import train_test_split #导入训练集测试集分隔器
from sklearn.model_selection import cross_val_score

wine = load_wine() #加载红酒数据集

clf = tree.DecisionTreeClassifier(criterion="gini", random_state=20
                                 ,max_depth=5          #z最大深度
                                 ,min_samples_leaf=10  #叶子节点最小样本数
                                 ,min_samples_split=10) #节点允许分枝样本数

#参数1: 模型, 参数2:数据, 参数3:标签, cv表示分成几份
cross_val_score(clf, wine.data, wine.target, cv=5)

看下结果

 从结果中我们看出决策树在红酒数据集中表现并不稳定,有些数据集可以达到0.97,有些只有0.66,所以接下去我们可以用些更强大的模型来试试效果