CART(classification and regression tree)

news2025/1/19 20:41:43

基尼指数

在分类问题中,假设有K个类,样本点属于第k类的概率为pk,则概率分布的基尼指数定义为
Gini指数越小表示集合的纯度越高,反之,集合越不纯

CART

CART分类树默认使用基尼指数选择最优特征
常见数构建算法:

ID3:信息增益标示按某种特性分类后,剩余特性的信息熵的大小的衰减程度,信息熵越小,证明已经分好的类别就更加的纯粹单一

C4.5:选择了信息增益比替代信息增益;由于ID3算法会倾向于选取特征值较多的特征进行分类(因为这样会让信息增益很大)

基尼系数:代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好
sklearn中使用sklearn.tree.DecisionTreeClassifier可以实现CART分类树,默认使用gini指数选择特征。

在使用DecisionTreeClassifier对训练数据集进行拟合后,可使用下面封装的绘图函数进行观察

def plot_decision_boundary(model, axis):
  
  x0, x1 = np.meshgrid(
    np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),
      # axis=1表示横轴
      # reshape(-1,1)会根据col=1自动计算row值
    np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),
   )
  X_new = np.c_[x0.ravel(), x1.ravel()]
  y_predict = model.predict(X_new)
  zz = y_predict.reshape(x0.shape)
  from matplotlib.colors import ListedColormap
  custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])
  plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)

简单例子

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载示例数据集(鸢尾花数据集)
data = load_iris()
X = data.data  # 特征
y = data.target  # 目标

# 只选择两个类别进行二元分类
X = X[y != 0]
y = y[y != 0]

# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建分类树(CART)
clf = DecisionTreeClassifier()

# 训练分类树
clf.fit(X_train, y_train)

# 使用分类树进行预测
y_pred = clf.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

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

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

相关文章

从零实现FFmpeg6.0+ SDL2播放器

FFmpeg6.0开发环境搭建播放器代码框架分析解复用模块开发实现包队列和帧队列设计音视频解码线程实现SDL2音频声音输出SDL2视频画面渲染-YUV显示音视频同步-基于音频 地址: https://xxetb.xet.tech/s/3NWJGf

Django项目配置

1 项目准备 1.1 创建test数据库,并导入数据,生成对应的表 登录数据库create database test;use test;导入数据创建表:source D:/Demo.sql; 1.2 安装Django及驱动程序: 安装django: pip install Django3.2.22 安装好后可使用命令&#xf…

家中种绿植有什么风水讲究?

现在越来越多的人,都居住在小区高楼里,与绿植的接触也越来越少, 因此,很多人会选择在自己家中种上几株绿植。在家里种植植物,不仅美观,陶冶情操,还能净化空气,为家中增添好的风水。 …

论文阅读:Efficient Point Cloud Segmentation with Geometry-Aware Sparse Networks

来源:ECCV2022 链接:Efficient Point Cloud Segmentation with Geometry-Aware Sparse Networks | SpringerLink 0、Abstract 在点云学习中,稀疏性和几何性是两个核心特性。近年来,为了提高点云语义分割的性能,人们提…

数据结构--B树

目录 回顾二叉查找树 如何保证查找效率 B树的定义 提炼 B树的插入和删除 概括B树的插入方法如下 B树的删除 导致删除时,结点不满足关键字的个数范围时(需要借) 如果兄弟不够借,需要合体 回顾B树的删除 B树 B树的查找 …

python二次开发Solidworks:圆+样条曲线草图

以下代码实现在Solidworks中构建草图,在草图中绘制了一个圆和一根样条曲线,并实现全约束。 import numpy as np import win32com.client as win32 import pythoncom def vtPoint(x, y, z):# 坐标点转化为浮点数return win32.VARIANT(pythoncom.VT_ARRAY…

分享《泰坦陨落2》缺少msvcr120.dll的解决方法,亲测有效的5个修复方法

自我接触《泰坦陨落2》这款游戏以来,我深深地被它精彩的战斗场景、丰富的剧情设定以及独特的角色设计所吸引。然而,在一次游戏过程中,我遭遇了一个前所未有的问题——缺少msvcr120.dll文件,导致游戏无法正常运行。 一、缺少msvcr1…

【Java 进阶篇】深入了解 JavaScript 的 innerHTML 属性

JavaScript 是前端开发中不可或缺的一部分,它为我们提供了丰富的工具和技术,以便更好地操作和交互HTML页面。在本文中,我们将重点介绍JavaScript中的 innerHTML 属性,它是DOM(文档对象模型)的一部分&#x…

python实现截图识别文字(已打包成exe程序)

目录 1、简介 2、如何使用 3、完整代码 4、免费下载⭐⭐ 在这里给大家安利一个自己开发的截图识别文字的程序! 程序使用的前提,是电脑本机装了Python环境!(版本不限) 1、简介 这段代码创建了一个屏幕截图工具的GUI应用程序,允…

雷达基础导论及MATLAB仿真

文章目录 前言一、雷达基础导论二、Matlab 仿真1、SNR 相对检测距离的仿真①、Matlab 源码②、仿真1)、不同 RCS,SNR 相对检测距离仿真2)、不同雷达峰值功率,SNR 相对检测距离仿真 2、脉冲宽度相对所要求的 SNR 仿真①、Matlab 源…

【字符串匹配算法】KMP、哈希

STL O(mn) C中提供子串查询的函数可以使用std::string类的相关方法来实现。 find函数:可以查找一个子串在原字符串中的第一个出现位置。它返回子串的起始索引,如果找不到则返回std::string::npos。substr函数:可以提取原字符串中的一个子串…

代码随想录二刷 Day42

62.不同路径 简单题目自己就可以写出来&#xff0c;注意下创建二维vector的方法就可以&#xff0c; dp table如下 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,0));for (int i 0; i < n; i ) {dp[…

消息队列项目创建第二部分

消息队列项目创建第二部分 一、在硬盘上存储信息使用文件存储消息具体存放策略 垃圾回收&#xff08;JVM&#xff09;创建文件管理类——MessageFileManger创建统计文件数据和文件统计文件的读写操作创建消息对应的文件和目录创建一个统一处理异常 消息文件的读写消息的序列化和…

算法通关村第一关——链表经典问题之合并有序链表三种方法一层一层优化

算法通关村第一关——链表经典问题之合并有序链表三种方法一层一层优化 题目描述 将两个升序的链表合并为一个新的升序链表并返回&#xff0c;新链表是通过拼接两个给定的两个链表的所有节点组成的。 解题思路 第一种 新建一个链表&#xff0c;然后分别遍历两个链表&#…

记一次edu站点并拿下的过程cnvd

0x01 jeecg-boot介绍 JeecgBoot是一款基于代码生成器的低代码开发平台&#xff0c;零代码开发&#xff01;采用前后端分离架构&#xff1a;SpringBoot2.x&#xff0c;Ant Design&Vue&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT。强大的代码生成器让前后端代…

k8s-17 k8s调度

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 kube-scheduler 是 Kubernetes 集群的默认调度器&#xff0c;并且是集群控制面的一部分如果你真的希望或者有这方面…

python如何连接数据库 ?一文详解pymysql的用法 。

使用Python连接数据库是常用的操作 &#xff0c;那么在Python代码中取操作数据库呢 &#xff1f; 接下来介绍一个包 &#xff1a;pymysql .它能帮我们在代码中连接MySQL数据库进行各种操作。 1.常用数据库模块 在做自动化测试时&#xff0c;我们经常会查库的需求 &#xff0c;…

解剖—顺序表相关OJ练习题

目录 一、删除有序数组中的重复项&#xff0c;返回出现一次元素的个数。 二、原地移除数组中所有数值等于val的元素 三、合并两个有序数组 四、旋转数组 五、数组形式的整数加法 一、删除有序数组中的重复项&#xff0c;返回出现一次元素的个数。 26. 删除有序数组中的重…

Service Mesh和Kubernetes:加强微服务的通信与安全性

文章目录 什么是Service Mesh&#xff1f;Service Mesh的优势1. 流量控制2. 安全性3. 可观测性 Istio&#xff1a;Service Mesh的领军者流量管理安全性可观测性 Linkerd&#xff1a;轻量级Service Mesh流量管理安全性可观测性 Istio vs. Linkerd实际应用结论 &#x1f388;个人…

vscode中4个json的区别和联系

在vscode中快捷键ctrlshiftp&#xff0c;然后输入setting&#xff0c;会出现下图几个选项 当不同设置之间出现冲突时&#xff0c;听谁的&#xff1a; Open Workspace Settings(JSON) > Open Settings(JSON) Open User Settings > Open Default Settings(JSON) Open Wo…