百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

机器学习的特征预处理(机器学习的预处理方法)

toyiye 2024-07-09 22:40 12 浏览 0 评论

在这篇中,我将介绍针对各种类型的特征和各种类型的机器学习模型进行特征预处理的基本方法。现在,让我们将所有机器学习模型划分为基于树和非树的模型。例如,决策树分类器尝试为每个特征找到最有用的分割,并且它不会改变其行为及其预测,这些是基于树的模型。另一方面,存在非基于树的模型,其依赖于这些变换,例如最近邻,线性模型和神经网络。我们还有不同类型的特征,即数字特征,分类特征和日期时间特征。首先,让我们从数字特征开始。

数字特征

用于数字特征的预处理技术是:

缩放:

在非基于树的模型的情况下,几乎总是需要重新缩放数据。对于数值变量,通常会对数据进行归一化或标准化。这些术语是什么意思?

1.归一化:它意味着通过将每个要素缩放到给定范围来转换要素。转型由下式给出:

X_norm =(X - X.min)/(X.max - X.min)

Scikit-learn提供了sklearn.preprocessing.MinMaxScaler 函数。

2. Stardardization:数据集的标准化是许多机器学习估计器的一个常见要求:如果单个特征看起来不像标准正态分布数据(例如均值为0的高斯分布和单位方差),它们的性能可能会很差。表示数据中心在0左右,相对于标准差进行缩放:

X_stand =(X-μ)/σ

Scikit-learn提供了sklearn.preprocessing.StandardScaler函数。

使用异常值缩放数据:如果您的数据包含许多异常值,则使用数据的均值和方差进行缩放可能不会很好。在这些情况下,您可以使用robust_scale和RobustScaler替代插入替换。他们对数据的中心和范围使用更可靠的估计。

秩(Rank):

在这里,数据值被转换为一个索引数组。如果我们没有时间手动处理异常值,线性模型、KNN和神经网络可以从这种转换中获益。

Scipy函数 scipy.stats.rankdata用于此目的。

基于对数变换:这通常有助于非树木,特别是神经网络模型。它就是简单的对数变换。它可以用numpy log函数来实现

np.log(1+x)

升幂:它可以用来提取数据的平方根。这可能是有用的,因为它使太大的值更接近特征的平均值。与此同时,接近于零的值变得更容易区分。尽管很简单,但是这种转换可以显著改善神经网络的结果。

为此,我们讨论了数字特征预处理,模型选择如何影响特征预处理,以及最常用的预处理方法是什么。现在让我们转到分类和顺序特征。

分类和序数特征

现在,问题出现了 - 什么是分类和序数特征?分类特征是具有两个或更多类别的特征,但对类别没有内在排序。例如,性别(男性和女性)和头发颜色(金发,棕色,黑发,红色等)。虽然序数特征类似于分类变量,但两者之间的差异在于变量有明确的排序。例如,假设您有一个变量,经济状态,有三个类别(低,中,高)或教育经验(具有小学毕业生,高中毕业生,大学等)。用于这些函数的预处理方法是

标签编码:

这可以通过几种方式完成。一种是按字母顺序或排序顺序编码。这可以通过使用scikit-learn函数来完成另一种方法是使用pandas函数按照它们的外观顺序对类别进行编码 - 。它用于基于树的模型。sklearn.preprocessing.LabelEncoder. pandas.factorize

频率编码:

顾名思义它是根据特征的出现频率进行编码。这适用于基于树的模型。

One hot编码:

在此方法中,为每个类别创建一个新列,然后将其放在适当的位置,其他所有列都将为零。这适用于线性方法,kNN或神经网络。它有一个好处,即这里的值是缩放的,因为最小值为0,最大值为1. 函数可用sklearn.preprocessing.OneHotEncoder

接下来转到日期时间函数。

日期时间函数

日期和时间是机器学习的一个重要特征。这是周期性的,可以是星期几、月、季、年、分钟和小时。分析特定时间段或计算两个时间戳之间的差异可能很有用。Python有一个内置模块datetime,可以轻松处理日期和时间功能。

相关推荐

如何用 coco 数据集训练 Detectron2 模型?

随着最新的Pythorc1.3版本的发布,下一代完全重写了它以前的目标检测框架,新的目标检测框架被称为Detectron2。本教程将通过使用自定义coco数据集训练实例分割模型,帮助你开始使...

CICD联动阿里云容器服务Kubernetes实践之Bamboo篇

本文档以构建一个Java软件项目并部署到阿里云容器服务的Kubernetes集群为例说明如何使用Bamboo在阿里云Kubernetes服务上运行RemoteAgents并在agents上...

Open3D-ML点云语义分割实验【RandLA-Net】

作为点云Open3D-ML实验的一部分,我撰写了文章解释如何使用Tensorflow和PyTorch支持安装此库。为了测试安装,我解释了如何运行一个简单的Python脚本来可视化名为...

清理系统不用第三方工具(系统自带清理软件效果好不?)

清理优化系统一定要借助于优化工具吗?其实,手动优化系统也没有那么神秘,掌握了方法和技巧,系统清理也是一件简单和随心的事。一方面要为每一个可能产生累赘的文件找到清理的方法,另一方面要寻找能够提高工作效率...

【信创】联想开先终端开机不显示grub界面的修改方法

原文链接:【信创】联想开先终端开机不显示grub界面的修改方法...

如意玲珑成熟度再提升,三大发行版支持教程来啦!

前期,我们已分别发布如意玲珑在deepinV23与UOSV20、openEuler24.03发行版的操作指南,本文,我们将为大家详细介绍Ubuntu24.04、Debian12、op...

118种常见的多媒体文件格式(英文简写)

MP4[?mpi?f??]-MPEG-4Part14(MPEG-4第14部分)AVI[e?vi??a?]-AudioVideoInterleave(音视频交错)MOV[m...

密码丢了急上火?码住7种console密码紧急恢复方式!

身为攻城狮的你,...

CSGO丨CS2的cfg指令代码分享(csgo自己的cfg在哪里?config文件位置在哪?)

?...

使用open SSL生成局域网IP地址证书

某些特殊情况下,用户内网访问多可文档管理系统时需要启用SSL传输加密功能,但只有IP,没有域名和证书。这种情况下多可提供了一种免费可行的方式,通过openSSL生成免费证书。此方法生成证书浏览器会提示...

Python中加载配置文件(python怎么加载程序包)

我们在做开发的时候经常要使用配置文件,那么配置文件的加载就需要我们提前考虑,再不使用任何框架的情况下,我们通常会有两种解决办法:完整加载将所有配置信息一次性写入单一配置文件.部分加载将常用配置信息写...

python开发项目,不得不了解的.cfg配置文件

安装软件时,经常会见到后缀为.cfg、.ini的文件,一般我们不用管,只要不删就行。因为这些是程序安装、运行时需要用到的配置文件。但对开发者来说,这种文件是怎么回事就必须搞清了。本文从.cfg文件的创...

瑞芯微RK3568鸿蒙开发板OpenHarmony系统修改cfg文件权限方法

本文适用OpenHarmony开源鸿蒙系统,本次使用的是开源鸿蒙主板,搭载瑞芯微RK3568芯片。深圳触觉智能专注研发生产OpenHarmony开源鸿蒙硬件,包括核心板、开发板、嵌入式主板,工控整机等...

Python9:图像风格迁移-使用阿里的接口

先不多说,直接上结果图。#!/usr/bin/envpython#coding=utf-8importosfromaliyunsdkcore.clientimportAcsClient...

Python带你打造个性化的图片文字识别

我们的目标:从CSV文件读取用户的文件信息,并将文件名称修改为姓名格式的中文名称,进行规范资料整理,从而实现快速对多个文件进行重命名。最终效果:将原来无规律的文件名重命名为以姓名为名称的文件。技术点:...

取消回复欢迎 发表评论:

请填写验证码