决策树

机器学习第1集——分类决策树tree.DecisionTreeClassifier() 一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分枝就不会发生。“random",决策树在分枝时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。确定不纯度的计算方法,帮忙找出最佳节点和最佳分枝,不纯度越低,决策树对训练集的拟合越好。,限制信息增益的大小,信息增益小于设定数值的分枝不会发生。,限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃。,限制树的最大深度,超过设定深度的树枝全部剪掉。①实例化(也就是建立模型。 阅读详情

决策树常用参数调优

sklearn-决策树

简介
决策树,直白的理解可以看成是if-else进行分类,满足某个特征就会进入下一个枝节点;通过历史数据进行分析,寻找数据中的重要的特征。并以此为依据对新传入的数据进行特征分类,进行预测。

Read more: http://bluewhale.cc/2016-03-20/decision-tree.html#ixzz6j146FjPI
sklearn基本建模流程
1、实例化,建立评估模型对象—>2、通过模型接口训练模型—>3、通过模型接口提取需要的信息
在这里插入图片描述

决策树一种非参数的有监督学习方法,能从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。

1、数据集导入

#导包
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
#使用红酒数据集
wine = load_wine()
wine

在这里插入图片描述
可见数据集里面的数据多且杂乱无序,下一步将数据写入到DataFrame中

#红酒数据集形状
wine.data.shape

在这里插入图片描述

#红酒数据集标签
wine.target

在这里插入图片描述

import pandas as pd
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)

在这里插入图片描述

2、查看数据信息

#红酒数据集特征名称
wine.feature_names

在这里插入图片描述

#红酒数据集标签名称
wine.target_names

在这里插入图片描述

3、划分数据集

#划分测试集和训练集
Xtrain,Xtest,Ytrain,Ytest=train_test_split(wine.data,wine.target,test_size=0.3)
#查看Xtrain数据
Xtrain

在这里插入图片描述

#查看X测试集数据形状
Xtest.shape

在这里插入图片描述

4、初步绘制出一棵树

1)决策树基本流程可以简单概括了:

在这里插入图片描述

2)参数解释

criterion :确定不纯度的计算方法,找出最佳节点和最佳分枝,不纯度越低,决策树的训练集的拟合越好
可以填写gini使用基尼系数(默认),填写entropy使用信息增益
如何选取:一般使用基尼系数,数据维度大,噪音大时使用基尼系数,维度低,数据清洗时,使用信息熵,也可以两个进行测试,哪个效果好使用哪个。

3)开始建立一棵树:

#实例化
clf =tree.DecisionTreeClassifier(criterion='entropy')
#数据代入训练
clf = clf.fit(Xtrain,Ytrain)
#使用接口导入测试集
score = clf.score(Xtest,Ytest)#返回预测的准确度
score

在这里插入图片描述
结果每次是不一样的,随机数选取每运行一次结果都不同

feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']

#画树用到的库
import graphviz
dot_data = tree.export_graphviz(clf
                               ,feature_names=feature_name
                               ,class_names=['琴酒','雪莉','贝尔摩德']
                               ,filled = True    #颜色
                               ,rounded=True)    #形状
graph = graphviz.Source(dot_data)
graph

在这里插入图片描述

#特征重要性系数
clf.feature_importances_

在这里插入图片描述

#特征重要性系数及名称
[*zip(feature_name,clf.feature_importances_)]

在这里插入图片描述

4)引入新的参数

random_state:用来设置分支中的随机模式的参数,默认为None,在高维度时,随机性会表现更明显,输入任意整数
会一直长出同一棵树,让模型稳定下来。

#实例化
clf =tree.DecisionTreeClassifier(criterion='entropy',random_state=30)
#数据代入训练
clf = clf.fit(Xtrain,Ytrain)
#使用接口导入测试集
score = clf.score(Xtest,Ytest)#返回预测的准确度
score

在这里插入图片描述
这样每次返回的结果都会相同,一直都是0.98148148…
splitter:也是用来控制决策树中的随机选项的,有两种输入值,输入’best’,决策树在分支时虽然随机,但是优先
选择更重要的特征进行分枝,输入‘random’分枝时会更加随机。

clf =tree.DecisionTreeClassifier(criterion='entropy',random_state=30,splitter='random')
clf = clf.fit(Xtrain,Ytrain)
score = clf.score(Xtest,Ytest)#返回预测的准确度
score

在这里插入图片描述

import graphviz
dot_data = tree.export_graphviz(clf
                               ,feature_names=feature_name
                               ,class_names=['琴酒','雪莉','贝尔摩德']
                               ,filled = True    #颜色
                               ,rounded=True)    #形状
graph = graphviz.Source(dot_data)
print(type(graph))
print(graph)
graph

在这里插入图片描述
可见准确性降低,但是决策树深度增加,其实就是随机性增加了,为了更好的随机性可将该参数注释掉

5)查看此时的拟合程度(未对剪枝参数进行调优时)

#拟合程度
score_train = clf.score(Xtrain,Ytrain)
score_train

在这里插入图片描述
这个模型还不错训练集拟合程度为1,测试集也超过了0.95,但是轻微过拟合在训练集上比测试集上要好

5、决策树核心调优

剪枝参数
max_depth:树的最大深度,超过最大深度的数值都会被剪掉
min_samples_leaf:一个节点在之后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分支不会发生
min_samples_split:一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分支,否则分枝就不会发生
max_features:max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃,默认值为总特征个数开平方取值
min_impurity_decrease:限制信息增益的大小,信息增益小于设定数值的分枝不会发生

clf =tree.DecisionTreeClassifier(criterion='entropy'
                                 ,random_state=0
                                 ,splitter='random'
                                 ,max_depth=3
#                                  ,min_samples_leaf=10
#                                  ,min_samples_split=10
                                )
#训练
clf = clf.fit(Xtrain,Ytrain)
dot_data = tree.export_graphviz(clf
                               ,feature_names=feature_name
                               ,class_names=['琴酒','雪莉','贝尔摩德']
                               ,filled = True    #颜色
                               ,rounded=True)    #形状
graph = graphviz.Source(dot_data)
graph

在这里插入图片描述

score = clf.score(Xtest,Ytest)#返回预测的准确度
score

在这里插入图片描述
可见剪枝参数进行调优后准确度下降了,所以该模型并没有达到最优状态,等到调到最优时候可查看分节点。

# apply返回每个测试样本所在的叶子节点的索引
clf.apply(Xtest)

在这里插入图片描述

# predict返回每个测试样本的分类返回的结果
clf.predict(Xtest)

在这里插入图片描述

6、学习曲线绘制

当然剪枝参数不是盲目调的,可以根据学习曲线看从几开始达到最优状态,因此进行最优参数调整

#绘制学习曲线,确定最优剪枝参数
import matplotlib.pyplot as plt

test = []
for i in range(10):
    clf =tree.DecisionTreeClassifier(max_depth=i+1
                                ,criterion='entropy'
                                ,random_state=30
                                ,splitter="random"
                                )
    clf = clf.fit(Xtrain,Ytrain)
    score=clf.score(Xtest,Ytest)
    test.append(score)
print(type(test))
plt.plot(range(1,11),test,color='red',label='max_depth')
plt.legend()
plt.show()

在这里插入图片描述
上图即为展示树的最大深度的最优参数,可见从3之后,该曲线趋于平稳状态,所以我可以设置max_depth=3,其它叶子节点的一些前剪枝和后剪枝参数也可以用用学习曲线进行绘制,这样进行调优效率更高

【自用】菜菜sklearn 第一期 决策树概述 & 分类树 分类树 DecisionTreeClassifier 和用决策树绘图 (export_graphviz) 的基础内容 阅读详情

相关推荐

机器学习——决策树,DecisionTreeClassifier参数详解,决策树可视化查看树结构

决策树   决策树是一种树型结构,其中每个内部节结点表示在一个属性上的测试,每一个分支代表一个测试输出,每个叶结点代表一种类别。 在书面的代码中,为了可视化的方便,我们采用特征组合的方式,将鸢尾花的四个两两进行组合,分别建立决策树模型,并对其进行验证。   DecisionTreeClassifier(criterion='entropy', min_samples_leaf=3)函数为创建一个决策树模型,其函数的参数含义如下所示: criterion:gini或者entropy,前者是基尼系数,后

小火的博客 3967

机器学习期末复习笔记

基本概念部分 统计学习方法可以概括如下…… 从给定的、有限的、用于学习的训练数据集合出发,假设数据是独立同分布产生的;并且假设要学习的模型属于某个函数的集合,称为假设空间;应用某个评价准则,从假设空间中选取一个最优模型,使它对已知的训练数据及未知的测试数据在给定的评价准则下有最优的预测;最优模型的选取由算法实现。这样,统计学习方法包括模型的假设空间、模型选择的准则以及模型学习的算法。称其为统计学习方法的三要素,简称为模型、策略和算法。 什么是有监督学习、无监督学习、半监督学习 有监督学习是指从标注数据中学

Jhx332211的博客 3332

决策树模型及案例(Python)

目录 1 决策树模型简介 2 Gini系数(CART决策树) 3信息熵、信息增益 4决策树模型代码实现 4.1分类决策树模型(DecisionTreeClassifier) 4.2回归决策树模型(DecisionTreeRegressor) 5案例:员工离职预测模型 5.1模型搭建 5.1.1数据读取与预处理 5.1.2提取特征变量和目标变量 5.1.3划分训练集与测试集 5.1.4模型搭建及训练 5.1.5代码汇总 5.2模型预测及评估 5.2.1直...

qq_42433311的博客 9万+

用scikit-learn 训练SVM的例子, clf.fit() clf.predict() 的作用

python clf.fit clf.predict

mervins的专栏 5万+

R语言——决策树模型

        决策树(Tree Nodels)是一种创建树状模型的方法,它使用‘基尼不纯度’(Gini Impurity)或信息增益(Information Gain)等标准对节点进行递归分割,以创建树状模型。决策树看起来像是以树状形式排列的一系列的if-else语句,易于理解,执行速度快。并且,它能够很好地表现多个特征之间的相互作用,适用于多种数据类型。(树状模型中,随机森林性能表现卓越) ...

RH_Wang的博客 3万+

机器学习第五章之决策树模型

机器学习专题系列

wangyutao12345的博客 5187

【机器学习15】决策树模型详解

决策树算法前言一、决策树算法的概述1.树模型2.树模型基本流程二、熵的作用三、决策树构造实例四、信息增益率和gini系数五、剪枝方法六、分类、回归任务七、树模型的可视化展示八、决策边界展示分析九、决策树预剪枝常用参数十、回归树模型总结 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的决策树的详细内容。 一、决策树算法的概述 1.树模型 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

lys_828的博客 4万+

机器学习——决策树模型:Python实现

机器学习——决策树模型:Python实现欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你

qq_34357269的博客 8772

用通俗易懂的方式讲解:决策树模型及案例(Python 代码)

基本原理是通过对一系列问题进行if/else的推导,最终实现相关决策。决策树模型的一个实例:决策树的概念并不复杂,主要是通过连续的逻辑判断得出最后的结论,其关键在于如何建立这样一棵“树”。

Python数据挖掘 2万+

决策树模型——鸢尾花分类

构建一个决策树分类模型,实现对鸢尾花的分类 1.lris数据集介绍: 鸢尾花数据集是机器学习领域中非常经典的一个分类数据集。数据集全名为:Iris Data Set,总共包含150行数据。 每一行由4个特征值及一个目标值(类别变量)组成。 其中4个特征值分别是:萼片长度、萼片宽度、花瓣长度、花瓣宽度 目标值为3种不同类别的鸢尾花:山鸢尾、变色鸢尾、维吉尼亚鸢尾 2.读取数据 Iris...

pillow的博客 2万+

Python决策树模型的基本原理和参数调优【附代码】

下图所示为一个典型的决策树模型:员工离职预测模型的简单演示。该决策树首先判断员工满意度是否小于5,答案为“是”则认为该员工会离职,答案为“否”则接着判断其收入是否小于10,000元,答案为“是”则认为该员工会离职,答案为“否”则认为该员工不会离职。这里。

weixin_60476982的博客 4925

决策树模型构建+调参Python代码——用决策树模型实现机器学习

决策树模型构建+调参Python代码——用决策树模型实现机器学习。

qq_41698317的博客 3529

决策树模型(R语言)

R语言中最常用于实现决策树的有两个包,分别是rpart包和party包,其区别如下: rpart包的处理方式:首先对所有自变量和所有分割点进行评估,最佳的选择是使分割后组内的数据更为“一致”(pure)。这里的“一致”是指组内数据的因变量取值变异较小。rpart包对这种“一致”性的默认度量是Gini值。确定停止划分的参数有很多(参见rpart.control),确定这些参数是非常重要而微妙的,因...

X_dmword的博客 7041

决策树模型

今天我们来复习决策树模型,并用项目教大家快速了解决策树模型,我会将大家编写代码中常见的错误点在代码注释中指出,希望不会浪费大家的时间,高效学习以上就是今天要讲的内容,本文仅仅简单介绍了决策树模型的推导与实现,还有一些其他的优化决策树模型的方法但本文主旨是便于大家复习模型,就不再赘述以上所有代码在Github仓库。

2403_85773052的博客 1298

【机器学习】九大决策树模型总结

这篇博客深入探讨了九种不同的决策树模型,每种模型都拥有其独特的特点和应用场景。我将带您了解一些经典的模型,让你理解它们的工作原理,并在实践中灵活运用它们。

chunyang的博客 3614

决策树模型(Decision Tree)

P1P_1P1​:表一种类别的数据占总数居的比例。P01−P1P0​1−P1​:表示除了P1P_1P1​类别以外的其他数据占总数据的比例。

SoyMilk的博客 3495

Decision Tree Model|决策树模型

本文介绍了决策树模型的基本概念和应用实例。决策树通过一系列条件判断对数据进行分类或回归预测,以猫分类为例,展示了决策树从根节点到叶节点的分类过程。文章还比较了四种基于相同特征集但结构不同的决策树,分析其差异原因(数据划分、特征重要性、随机性等),并指出评估决策树优劣的标准包括准确率、泛化能力和解释性。最后建议实践中可采用集成学习方法提升模型性能。更多计算机知识欢迎访问作者博客网站rn.berlinlian.cn。

m0_74462934的博客 1936

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。

乌拉大喵喵 2820

【海量数据挖掘/数据分析】之 决策树模型(决策树模型、决策树构成、决策树常用算法、决策树性能要求、信息增益、信息增益计算公式、决策树信息增益计算实例)

【海量数据挖掘/数据分析】之 决策树模型(决策树模型、决策树构成、决策树常用算法、决策树性能要求、信息增益、信息增益计算公式、决策树信息增益计算实例) 一、决策树模型 1、常用算法 2、属性划分策略 3、其他算法 三、决策树算法性能要求 四、 决策树模型创建 ( 递归创建决策树 ) 1 、 决策树模型创建 2 、 决策树创建算法 ( 递归 ) 3 、 递归操作 4 、 递归停止的条件 五、 决策树 树根属性 选择 六、信息增益 说明 1、 熵 和 信息 的数据组成 2 、 信息增

仙魁XAN 1万+

别再纠结VS还是VSCode了!新手C#环境搭建保姆级指南(含.NET Core安装验证)

本文为C#新手提供Visual Studio与VS Code的深度对比及环境搭建指南,涵盖.NET Core安装验证、工具选择决策框架及实战配置技巧。帮助开发者根据项目需求选择合适工具,快速搭建高效开发环境,提升编码效率。

weixin_30455023的博客 561

实战指南:如何用Kamailio+FreeSWITCH搭建高并发企业通信系统(附配置模板)

本文提供了一份实战指南,详细介绍了如何利用Kamailio与FreeSWITCH构建高并发企业通信系统。通过将Kamailio作为高性能SIP信令平面处理路由与负载均衡,FreeSWITCH作为媒体与应用平面负责通话与业务逻辑,实现信令与媒体分离的电信级架构。文章深入解析了架构设计、核心配置、集群部署与性能优化,并附有配置模板,旨在帮助企业构建可水平扩展、高可用的通信解决方案。

dell8的博客 364
上一篇: Pandas数据结构(1)
下一篇: 字符串
Martin !
博客等级 码龄6年 7粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值