1 sklearn的学习笔记--决策树

1、决策树 1.1 分类树
在中所有的机器模型算法都可以简化为三行代码 。
对应的代码如下所示:
# 第一步骤:实例化一个决策树的模型 , 其中criterion代表决策树进行决策的准则 , 有gini和entropy两种方法clf = tree.DecisionTreeClassifier(criterion="entropy")# 第二步骤:将之前准备好的数据喂入决策树 , 将其对应的数据和标签成组输入clf = clf.fit(Xtrain,Ytrain)# 第三步骤:准备通过train_test_split方法得到的切分后的数据集进行测试 , 输出内容为对应的acc得分score= clf.score(Xtest,Ytest)
在本实验中 , 我我们采用红酒数据集来进行辅助的学习:
# 第一步:导入已经处理好的红酒数据集from sklearn.datasets import load_wine# 第二部:实例化这个数据集接口wine = load_wine()# 第三步(选):将数据集可视化操作,记住concat中需要给定对应合并到维度条件import pandas as pdpd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target),axis=1])# 如下是对应的可视化数据集的结果
# 拿到了wine整体的数据集 , 但是没有区别训练集和验证集两种不同的状态Xtrain,Xtest,Ytrain,Ytest = train_test_split(wine.data, wine.target, test_size=0.3)# 到此为止 , 所有的准备工作都已经完成了# 接下来 , 执行sk三部曲 , 并输出你的得分 , 就可以渐渐看见你需要的树的得分了
决策树可视化
可是?我的树在哪呢?我怎么看不见 , 因此将我们的决策树实例化就显得非常重要了 。
import graphvizfeature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']dot_data = http://www.kingceram.com/post/tree.export_graphviz(clf,feature_names=feature_name,class_names=["琴酒",'雪莉','贝尔摩德'],filled=True,rounded=True)graph = graphviz.Source(dot_data)
这个树还是比较大的 , 但是我们可以发现其实在我们的训练数据中 , 拥有者13个不同的指标及其对应的数据 , 但是为什么这儿只有这点不同的决策条件呢?
这是因为:决策树本身就具有一定的随机性 , 在实例化对应的决策树的时候 , 内部有不少的参数采用了默认的设置内容 , 包括这类随机种子 , 因此多次执行上述的三部曲 , 都有可能出现不同的数值;就决策树本身而言 , 无论模型如何进化 , 本质上都在某个不纯度相关的指标上进行优化 。因此 , 集成算法被用来解决这个问题:表示 , 既然一棵树不能保证最优 , 那就建更多不同的树没然后从其中挑选出最好的树 。这样 , 也就导致了每次都会生成一些结果不同的树 。
那么?哪些参数会影响我们的树模型呢?
随机参数
clf.feature_importances_# 获得决策树的属性 , 输出其中的关键分类点# 将zip函数将名字和其对应的全书组成元组 , 并输出 , 可以更直观的看到哪一个数据起到决定性作用[*zip(feature_name,clf.feature_importances_)]
剪枝参数
决策树的模型也并非越深越好 , 当模型足够深就会出现过拟合的情况 , 因此我们应当对模型进行限制 , 防止其出现过拟合的情况