决策树-sklearn

news2024/11/24 19:28:46

决策树

1.概述

1.1 决策树是如何工作

决策树能够从一系列有特征和标签的数据中总结出决策规则,并且使用树状图的结构来表现,从而达到解决回归和分类问题。通俗的说,就是我们只需要问一系列问题就可以对数据进行分类。
核心要解决的问题:
1. 如何从数据中找出最佳节点和最佳分支。
2. 如何让决策树停止生长,防止过拟合。

1.2 sklearn中的决策树(分类树)

sklearn官网:http://scikit-learn.org/stable/index.html

1.2.1 sklearn中决策树的类都在”tree“这个模块之下。

简明介绍:

  1. 高随机版本分类树
  2. 高随机版本回归树
  3. 将生成的决策树导出为DOT格式,画图专用
    请添加图片描述

1.2.2 sklearn的基本建模流程

from sklearn import tree #导入需要的模块
clf = tree.DecisionTreeClassifier()     #实例化
clf = clf.fit(X_train,y_train) #用训练集数据训练模型
result = clf.score(X_test,y_test) #导入测试集,从接口中调用需要的信息

1.2.3 sklearn中重要参数的介绍

criterion
对于分类树来说,衡量一棵树的好坏的指标叫做‘不纯度’。通常来说,不纯度越低,这颗树就越好。
不纯度的计算方式有两种:
(1)信息熵(Entropy)
(2)基尼系数(Gini Impurity)
请添加图片描述
其中t代表节点,i代表标签的任意分类,p(i|t)代表标签i在节点t上的比例。当使用信息熵时,sklearn实际计算的是基于信息熵的信息增益(Information Gain),即父节点的信息熵和子节点的信息熵之差。
决策树的基本流程概括为:
(1)计算全部特征的不纯度指标
(2)选取不纯度指标最优的特征来进行分支
(3)除被选之外的特征中继续计算不纯度指标
(4)选取不纯度最低的特征来进行分支
splitter

用来控制决策树中的随机选项的。
(1)best:决策树在分枝时虽然随机,但是还是会优先选择更重要的特征进行分枝。
(2)random:决策树在分枝时会更加随机。

random_state

random_state用来设置分枝中的随机模式的参数。输入任意整数,使得长出相同的树,使得模型更加稳定。

1.2.4 剪枝参数的介绍

max_depth

限制树的最大深度,超过设定深度的树枝全部剪掉。

min_samples_leaf

一个节点在分支后的每一个字节点都必须要包含至少min_samples_leaf训练样本,否则分支不会发生。

min_samples_split

min_samples_split限定,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则分枝就不会发生。

max_features & min_impurity_decrease

max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃。

min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分枝不会发生。

class_weight

完成样本标签平衡的参数。

min_weight_fraction_leaf

有了权重之后,样本量就不再是单纯地记录数目,而是受输入的权重影响了,因此这时候剪枝,就需要搭配min_weight_fraction_leaf这个基于权重的剪枝参数来使用。

1.2.4 重要属性和接口

feature_importances_

能够查看各个特征对模型的重要性。

1.3 sklearn中的决策树(回归树)

1.3.1 重要参数,属性以及接口

回归树衡量分支的指标有三种:

(1)输入"mse"使用均方误差mean squared error(MSE。L2损失),父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准。这种指标使用叶子节点的平均值来最小化L1损失。

(2)输入“friedman_mse”使用费尔德曼均方误差。

(3)输入"mae"使用绝对平均误差MAE(mean absolute error),这种指标使用叶子节点的中值来最小化L1损失。

在回归树中,MSE不只是我们的分枝质量衡量指标,也是我们最常用的衡量回归树回归质量的指标,同时交叉验证的指标也是MSE。但是回归树的借口score是R平方。

虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算”负均方误差“(neg_mean_squared_error)。这是因为sklearn在计算模型评估指标的时候,会考虑指标本身的性质,均方误差本身是一种误差,所以被sklearn划分为模型的一种损失(loss),因此在sklearn当中,都以负数表示。真正的均方误差MSE的数值,其实就是neg_mean_squared_error
去掉负号的数字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20221226编译Toybrick的TB-RK3588X开发板的Android12系统3

20221226编译Toybrick的TB-RK3588X开发板的Android12系统3 2022/12/26 18:27 编译指令: 1、cat android12-rk3588.tar.gz.* >android12-rk3588.tar.gz 2、tar -zxvf android12-rk3588.tar.gz,解压缩后生成android12-rk3588-new目录 3、android12-rk3588-new 4、…

CSS篇.day04-单位,流式布局,弹性布局(flex),网格布局,渐变,变形与过渡

目录 1. 单位 2.流式布局 3.弹性布局(flex) 4.网格布局 5.渐变 6.变形与过渡 1. 单位 px: 绝对单位 像素em: 相对单位 基准点为父节点字体大小 若自身定义了font-size按自身来计算(一般浏览器默认16px)rem: 相对单位 相对根节点html的字体大小, css3新增属性, 根元…

【Python百日进阶-数据分析】Day139 - plotly甘特图:plotly.figure_factory.create_gantt()

文章目录一、语法二、参数三、返回值四、实例4.1 普通ff甘特图4.2 将任务组合在一起4.3 按数值变量着色4.4 create_gantt4.5具有数字条目的按列索引4.6 具有字符串条目的按列索引4.7 使用颜色字典4.8一、语法 已弃用,请用plotly.express.timeline()代替。 plotly.…

LeetCode88. 合并两个有序数组

题目 给你两个按非递减顺序排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你合并 nums2 到 nums1 中,使合并后的数组同样按非递减顺序排列。 注意:最终,合并后数组不…

统一观测|如何使用 Prometheus 监控 Windows

作者: 颍川 引言 微软 Windows 是当前主流操作系统之一,在桌面和服务端均有较大市场份额。 对于 Linux 操作系统,Prometheus 可以通过 Node Exporter 来进行基础资源(CPU、内存、磁盘、网络等)监控,类似…

吴恩达的2022年终盘点:生成式AI、ViT、大模型

昨日,**吴恩达在圣诞节的《The Batch》特刊上发布了一年一度的年终盘点。**在过去的一年,生成式AI迎来爆发式增长,由人工智能生成的图片在社交平台疯狂传播,引发大量争议的同时也推动了投资;视觉 Transformer(ViT) 的工…

【nowcoder】笔试强训Day8

目录 一、选择题 二、编程题 2.1两种排序方法 2.2最小公倍数 一、选择题 1.下列选项中关于Java中super关键字的说法正确的是() A super关键字是在子类对象内部指代其父类对象的引用 B super关键字不仅可以指代子类的直接父类,还可以直…

SpreadJS 16新建文件格式,Data Manager中的层次结构

SpreadJS 16新建文件格式,Data Manager中的层次结构 为TableSheet、Designer、Calculation、Shape和Workbook添加增强功能。 2022年12月22日-16:53新版本 特征 新建文件格式 新的.sjs文件格式使ExcelIO进程更快、更小。 表页增强功能 Data Manager中的层次结构。 Data Manager字…

【代码随想录】链表-golang

链表 from 代码随想录 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 思路:设置一个新的节点,节点的下一个是链表的第一个节点 /*** Definition f…

阿根廷夺冠早已预判,梅西经济爆火,这款产品在跨境电商卖断货了

2022年12月18日23:00,世界杯的决赛将举行,阿根廷会战法国;期间,梅西和姆巴佩也将会在绿茵场上狭路相逢。而作为现役名声最为响亮的球星之一,此次卡塔尔也是梅西最后一次征战世界杯赛场,同时,随着…

基于Python实现电影推荐系统【100010052】

电影推荐系统 标签:Tensorflow、矩阵分解、Surprise、PySpark 1、用Tensorflow实现矩阵分解 1.1、定义one_batch模块 import numpy as np import pandas as pddef read_and_process(filename, sep ::):col_names [user, item, rate, timestamp]df pd.read_cs…

IP判断.库函数复习.数组.C

strtok(在string.h库里)函数以"."为分隔符对IP字符串进行切分. atoi函数(在stdlib.h里)将切分的一部分字符串转换为十进制数字. 描述 C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串&#xf…

LeetCode题目笔记——1759. 统计同构子字符串的数目

文章目录题目描述题目难度——中等方法一:数学代码/C代码/Python总结题目描述 给你一个字符串 s ,返回 s 中 同构子字符串 的数目。由于答案可能很大,只需返回对 109 7 取余 后的结果。 同构字符串 的定义为:如果一个字符串中的…

300道网络安全工程师面试题(附答案解析)冲刺金三银四

2022年马上就要过去了,先来灵魂三连问,年初定的目标完成多少了?薪资涨了吗?女朋友找到了吗? 好了,不扎大家的心了,接下来进入正文。 由于我之前写了不少网络安全技术相关的文章和回答&#xff…

nginx 报400_nginx 400 Bad request

记录一次自己写出来的bug. 首先自己在gateway中做了filter,操作了header 操作中返回的报错400 nginx, 所以一直将矛头指向了nginx配置,但是各种查询和修改后,错误依旧. 静下心来一步步的看,发现请求实际上已经通过nginx发送到了gateway中,并且gateway日志中也清楚的记录了lo…

[普及练习场]失踪的7

本专辑上篇: [普及练习场] 生活大爆炸版石头剪刀布 看得都爽,对吧!感谢hydro的页面和浴谷的搬运。 目录 一.读题 失踪的7 题意 二 .做题 算法原理 算法实现 全篇代码分解讲解 输入 中心 一.读题 失踪的7 题目描述 远古的 Pascal 人也…

FIT2CLOUD飞致云荣膺“2022年度OSCHINA优秀开源技术团队”奖项

2022年12月,知名开源技术社区OSCHINA(开源中国)公布了“2022年度OSCHINA优秀开源技术团队”入选名单。凭借在开源软件研发和开源社区运营方面的优秀表现,FIT2CLOUD飞致云获得了OSCHINA社区的认可,荣膺“2022年度优秀开…

基于人脸关键点检测的驾驶员睡意检测系统

摘要 驾驶员注意力不集中或者分心是道路交通事故的主要原因。 为了减少道路交通事故,设计开发驾驶员疲劳检测系统至关重要。 本研究利用人脸关键点检测方法提出了驾驶员睡意检测系统,目的是使驾驶更安全。 一.人类检测方法 人脸关键点检测是人脸识别任…

B. Array Walk(贪心)

Problem - 1389B - Codeforces 给你一个数组a1,a2,...,an&#xff0c;由n个正整数组成。 最初&#xff0c;你站在索引1处&#xff0c;分数等于a1。你可以进行两种移动。 向右移动--从你当前的索引x走到x1&#xff0c;并将ax1加入你的分数。这个动作只有在x<n时才能进行。 …

黑客窃取 4 亿 Twitter 用户记录,勒索马斯克破财消灾

整理 | 何苗 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 上周五&#xff0c;一个用户名为 Ryushi 的用户在黑客论坛 Breached 上发布了一个帖子声称&#xff0c;已成功利用漏洞抓取了超 4 亿 Twitter 用户数据并在线出售。 为了证明数据的真实性&am…