机器学习中的CatBoost算法

我们经常遇到包含分类特征的数据集,为了将这些数据集拟合到Boosting模型中,我们对数据集应用各种编码技术,例如One-Hot编码或标签编码。但是应用One-Hot编码会创建一个稀疏矩阵,这有时可能导致模型的过拟合,我们使用CatBoost来处理这个问题。CatBoost可以自动处理分类特征。

什么是CatBoost

CatBoost或Categorical Boosting是由Yandex开发的开源boosting库。它被设计用于具有大量独立特征的回归和分类等问题。
Catboost是梯度提升的一种变体,可以处理分类和数值特征。它不需要任何特征编码技术,如One-Hot Encoder或Label Encoder将分类特征转换为数值特征。它还使用了一种称为对称加权分位数草图(SWQS)的算法,该算法自动处理数据集中的缺失值,以减少过拟合并提高数据集的整体性能。

CatBoost的特点

  • 用于处理分类特征的内置方法 - CatBoost可以处理分类特征,而无需任何特征编码
  • 处理缺失值的内置方法 -与其他模型不同,CatBoost可以轻松处理数据集中的任何缺失值
  • 自动特征缩放 - CatBoost内部将所有列缩放为相同的缩放比率,而在其他模型中,我们需要大量地转换列
  • 内置交叉验证 - CatBoost在内部应用交叉验证方法来选择模型的最佳超参数。
  • 正则化 - CatBoost支持L1和L2正则化方法,以减少过拟合

CatBoost与其他Boosting算法在不同数据集上的比较结果

在这里插入图片描述

CatBoost安装和应用案例

安装

pip install catboost

我们将使用Python将CatBoost应用于机器学习项目问题。在这个问题中,我们给出了一个包含3种花的数据集,以及这些花的特征,如萼片长度,萼片宽度,花瓣长度和花瓣宽度,我们必须将花分类到这些物种中。

导入库

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from catboost import CatBoostClassifier
import warnings
warnings.filterwarnings("ignore")

加载数据集
导入库之后,我们将使用pandas read_csv方法加载我们的数据集:

data = pd.read_csv("Iris.csv")

# Printing the shape of the dataset
print(data.shape)

输出

(150, 6)

我们的数据集有150行和6列。让我们使用head()方法探索数据集内容,如下所示:

data.head()

在这里插入图片描述

删除ID列并从数据集中分离目标变量

data = data.drop('Id', axis=1)
X = data.iloc[:, :-1]
y = data.iloc[:, -1]
print("Shape of X is %s and shape \
    of y is %s" % (X.shape, y.shape))

输出

Shape of X is (150, 4) and shape of y is (150,)

由于这是一个分类任务,我们希望确定因变量中唯一类别的总数。

total_classes = y.nunique()
print("Number of unique species in dataset are: ",total_classes)

输出

Number of unique species in dataset are: 3

在我们的因变量中有3个唯一类,我们希望看到这些唯一类的计数,以检查数据集中的平衡。

distribution = y.value_counts()
print(distribution)

输出

Iris-virginica     50
Iris-setosa        50
Iris-versicolor    50
Name: Species, dtype: int64

让我们深入挖掘我们的数据集,可以在上面看到,我们的数据集包含3个类别,我们的花也分布在其中,因为有150个样本,所有三个物种在数据集中有相同数量的样本,所以没有类别不平衡。

拆分数据集

现在,我们将分割数据集用于训练和验证目的,验证集占总数据集的25%。为了将数据集划分为训练和测试,我们将使用sklearn模型选择中的train_test_split方法。

X_train, X_val, Y_train, Y_val = train_test_split(
	X, y, test_size=0.25, random_state=28)

将CatBoost应用于数据

# Define the hyperparameters for the CatBoost algorithm
params = {'learning_rate': 0.1, 'depth': 6,\
		'l2_leaf_reg': 3, 'iterations': 100}

# Initialize the CatBoostClassifier object
# with the defined hyperparameters and fit it on the training set
model = CatBoostClassifier(**params)
model.fit(X_train, Y_train)

CatBoost模型的准确性

# Predict the target variable on the validation
# set and evaluate the performance
y_pred = model.predict(X_val)
accuracy = (y_pred == np.array(Y_val)).mean()
print("Validation Accuracy:", accuracy)

输出

Validation Accuracy: 0.33518005540166207

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle中rman使用记录

最近在项目中,遇到使用RMAN的操作来恢复数据库中某个时间归档日志,RMAN的原理和理解,网友们百度了解一下。我重点将实操部分了。直接上实验环节,让网友更懂。(特别提醒:我是1:1用VMware克隆数据库进行RMAN还…

分布式与一致性协议之Paxos算法(三)

Paxos算法 兰伯特关于Multi-Paxos的思考 领导者 我们可以通过引入领导者(Leader)节点来解决第一个问题。也就是说将领导者节点作为唯一提议者,如图所示。这样就不存在多个提议者同时提交提案的情况,也就不存在提案冲突的情况了。这里补充一点:在论文中…

开发规范:API安全

开发规范:API安全 API是现代移动、SaaS和web应用程序的关键组成部分,可以应用在面向客户、合作伙伴和内部应用程序中。API可以暴露应用程序逻辑和敏感数据。不安全的API很容易成为黑客攻击的目标,使他们能够访问安全的服务器或网络。攻击者可…

NXP i.MX8系列平台开发讲解 - 3.9 Linux PCIe协议相关介绍(二)

目录 1. PCIe 传输层协议 2. TLP介绍 2.1 TLP包格式 2.2 TLP包的种类 2.3 TLP 包传输例子 2.4 TLP 路由规则 根据上一章的知识,对于PCIe的发展和基础知识有了大概了解,本章节将会讲解PCIe的一些工作原理,使用的协议,通信交互…

挑战一周完成Vue3项目Day2:路由配置+登录模块+layout组件+路由鉴权

一、路由配置 经过分析,项目一共需要4个一级路由:登录(login)、主页(home)、404、任意路由(重定向到404)。 1、安装路由插件 pnpm install vue-router 2、创建路由组件 在src目…

dremio数据湖sql行列转换及转置

1、行转列 (扁平化) 数据准备 表 aa 1.1 cross join unnest 在Dremio中,UNNEST 函数用于将数组或复杂类型的列(如JSON、Map或Array类型)中的值“炸裂”(分解)成多行. with aa as ( select 上海 as city, ARRAY[浦东…

2024程诺申论突击理论刷题班

2024程诺申论突击理论刷题班,为备考者提供了系统而高效的申论学习平台。在这个班里,程诺老师以其深厚的理论功底和丰富的教学经验,引导我们深入理解申论的本质和技巧。刷题环节精心设计,让我们在实战中巩固知识,提升能…

Professional CUDA C Programming

2023/4/28 1.使用nvfrof时,报错 解决方法: 将路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\extras\CUPTI\lib64 下的文件cupti64_2020.2.0.dll复制到路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin下即可。 2…

Innodb底层原理与Mysql日志机制到底怎么个事???

在学完Innodb底层原理与Mysql日志机制,自己进行总结,画了一张脑图,思路清晰许多 希望对大家也能有点帮助

Visual Studio Code基础:打开一个编辑器(文件)时,覆盖了原编辑器

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 在使用vscode时,偶尔会出现这样的问题:打开了某个编辑器(文件,下面统称文件)后,再打开其他文件…

安装JAVA和java IDEA并汉化过程

1.安装java: 打开java的下载链接: Java Downloads | Oracle 然后选择对应的版本下载即可,我这里是windows 所以下载这个 然后正常一步步安装即可。 2.配置java环境: 在桌面右键此电脑然后点击属性——高级系统设置——环境变量——然后…

ACE框架学习3

ACE Acceptor-Connector框架 该框架实现 Acceptor-Connector 模式,该模式解除了“网络化应用中的协作对端服务的连接和初始化”与“连接和初始化之后它们所执行的处理”的耦合。Acceptor-Connector 框架允许成用独立于它们所提供的服务来配置其连接布局的关键属性。…

【万字长文】看完这篇yolov4详解,那算是真会了

前言 目标检测作为计算机视觉领域的一个核心任务,其目的是识别出图像中所有感兴趣的目标,并给出它们的类别和位置。YOLO(You Only Look Once)系列模型因其检测速度快、性能优异而成为该领域的明星。随着YOLOv4的推出,…

网络安全的防护措施有哪些?

1. 安全策略和合规性 2. 物理和网络安全 3. 数据加密 4. 软件和系统更新 5. 访问控制 6. 威胁监测和响应 7. 员工培训和安全意识 8. 备份和灾难恢复 零基础入门学习路线 视频配套资料&国内外网安书籍、文档 网络安全面试题 网络安全的防护措施多种多样&#xff0c…

JVM的垃圾回收机制(GC机制)

在Java代码运行的过程中,JVM发现 某些资源不需要再使用的时候,就会自动把资源所占的内存给回收掉,就不需要程序员自行操作了。“自动回收资源”就是JVM的“垃圾回收机制”,“垃圾回收机制”也称"GC机制"。 对于Java代码…

排序算法(2)快排

交换排序 思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 一、冒泡排序 public static…

Sarcasm detection论文解析 | 通过阅读进行讽刺推理-Reasoning with sarcasm by reading in-between

论文地址 论文地址:[1805.02856] Reasoning with Sarcasm by Reading In-between (arxiv.org) 论文首页 笔记大纲 通过阅读进行讽刺推理论文笔记 📅出版年份:2018📖出版期刊:📈影响因子:🧑文章作者:Tay Yi,Luu Anh…

FIR滤波器——DSP学习笔记三(包含一个滤波器设计的简明案例)

​​​​​​ 背景知识 FIR滤波器的特性与优点 可精确地实现线性相位响应(Linear phase response),无相位失真; 总是稳定的,所有极点都位于原点 线性相位FIR滤波器的性质、类型及零点位置 冲击响应满足:奇…

挺看好的一位实习生,顶峰见!

大家好,我是程序员鱼皮。今天我要分享自己团队里一位全栈实习生的实习总结。 在实习期间,这位同学参与了多个项目的工作,包括企业动态公告系统的开发、企业周边系统的搭建、撰写技术教程、开发 IDEA 插件、构建云端管理平台等等。 实习近 3…

个人学习总结__打开摄像头、播放网络视频的以及ffmpeg推流

前言 最近入手了一款非常便宜的usb摄像头(买回来感觉画质很低,没有描述的4k,不过也够用于学习了),想着利用它来开启流媒体相关技术的学习。第一步便是打开摄像头,从而才能够对它进行一系列后续操作,诸如实…