【机器学习】 特征工程:特征预处理,归一化、标准化、处理缺失值

news2025/1/21 6:35:10

特征预处理采用的是特定的统计方法(数学方法)将数据转化为算法要求的数字

1. 数值型数据

归一化,将原始数据变换到[0,1]之间

标准化,数据转化到均值为0,方差为1的范围内   

缺失值,缺失值处理成均值、中位数等

2. 类别型数据

降维,多指标转化为少数几个综合指标,去掉关联性不大的指标

PCA,降维的一种

3. 时间类别

时间的切分


1. 归一化

归一化是在特征(维度)非常多的时候,可以防止某一维或某几维对数据影响过大,也是为了把不同来源的数据统一到一个参考区间下,这样比较起来才有意义。其次可以让程序更快地运行。

例如,一个人的身高和体重两个特征,假如体重50kg,身高175cm,由于两个单位不一样,数值大小不一样。如果比较两个人的体型差距时,那么身高的影响结果会比较大,因此在做计算之前需要先进行归一化操作。

归一化的公式为:

        x^{'} = \frac{x-min}{max-min}               x^{''} = x^{'}*(mx-mi)+mi

式中,max min 分别代表某列中的最大值和最小值;x 为归一化之前的值;x'' 为归一化后的结果;mxmi 为要归一化的区间,默认是 [0,1],即mx=1,mi=0

在 sklearn 中的实现,导入方法: from sklearn.preprocessing import MinMaxScaler

归一化方法: scaler.fit_transform()

# 自定义数据
data = [[180,75,25],[175,80,19],[159,50,40],[160,60,32]]
# 导入归一化方法
from sklearn.preprocessing import MinMaxScaler
# 接收该方法
# scaler = MinMaxScaler(feature_range=(0,2)) #指定归一化区间
scaler = MinMaxScaler()
# 将数据传入归一化方法,产生返回值列表类型
result = scaler.fit_transform(data)

可以在归一化方法 MinMaxScaler() 中加入参数 feature_range=( , ) 来指定归一化范围,默认[0,1]。

归一化的优缺点:

归一化非常容易受到最大值和最小值的影响,因此,如果数据集中存在一些异常点,结果将发生很大改变,因此这种方法的鲁棒性(稳定性)很差。只适合数据量比较精确,比较小的情况。


2. 标准化

为了防止某一特征对结果影响太大,将每一个特征(每一列)都进行标准化处理,常用的方法是 z-score 标准化,处理后的数据均值为0标准差为1满足标准正态分布。标准正态分布图如下:

标准化公式:

x^{'}=(x-\mu )/\sigma

其中,\mu 是样本均值\sigma 是样本标准差,它们可以通过现有的样本进行估计,在已有的样本足够多的情况下比较稳定,不受样本最大值和最小值的影响,适合嘈杂的数据场景。

标准差的求法是先求方差,方差 std 的求法如下,n为每个特征的样本数。

std = \frac{(\,(x1-mean)^{2}+(x2-mean)^{2}+...+(xn-mean)^{2}\,)}{n}

标准差为方差开根号

\sigma =\sqrt{std}

方差和标准差越趋近于0,则表示数据越集中;如果越大,表示数据越离散。

在 sklearn 中实现,导入方法: from sklearn.preprocessing import StandardScaler

标准化方法: scaler.fit_transform()

# 自定义数据
data = [[180,75,25],[175,80,19],[159,50,40],[160,60,32]]
# 导入标准化
from sklearn.preprocessing import StandardScaler
# 接收标准化
scaler = StandardScaler()
# 将数据传入标准化方法产生返回值是列表类型
result = scaler.fit_transform(data)


3. 缺失值处理

缺失值一般有两种处理方法,第一种是直接进行删除,第二种是进行替换。除非缺失值占总数据集的比例非常少,才推荐使用删除的方式,否则建议使用平均值中位数的方式进行替换

在sklearn中有专门的缺失值处理方式,from sklearn.impute import SimpleImputer

处理方法 SimpleImputer() 参数设置:

missing_values: 数据中的哪些值视为缺失值。默认missing_values=nan,把数据中的nan当作缺失值

strategy 替换缺失值的策略,默认strategy='mean',使用平均值替换,可选'median'中位数,'most_frequent'众数,'constant'常数项。

注意:这里的均值众数等都是该缺失值所在特征列上的均值众数

fill_value:只有当指定 strategy='constant' 时才使用,用于指定一个常数,默认fill_value=None

# 处理缺失值
# 自定义数据
import numpy as np
data = [[1,2],[np.nan,4],[9,1]]
# 导入缺失值处理方法
from sklearn.impute import SimpleImputer
# 接收方法
si = SimpleImputer()
# 传入原始数据
result = si.fit_transform(data)

使用默认值修改缺失值,用平均值替换nan 

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

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

相关文章

前后端联调时JS数据精度问题的解决

在JavaScript中,Number类型范围 -2^53 1 到 2^53 - 1,而在Java中Long类型的取值范围是 -2^63 1 到 2^63 - 1, 比JavaScript中大很多,所以后端能正常处理。 其实 ES6 引入了 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 这两个常量…

开源与闭源:驾驭大模型未来的关键决断

在数字化的时代洪流中,开源与闭源的选择不断成为技术界的重要分水岭。随着特斯拉CEO埃隆马斯克的言论及其决策,公开支持开源,并糅合商业理念与技术革新,使得这场辩论再次成为公众关注的焦点。那么,在这场关乎技术发展脉…

八股文-TCP的三次握手

TCP协议是一种面向连接、可靠传输的协议,而建立连接的过程就是著名的三次握手。这个过程保证了通信的双方能够同步信息,确保后续的数据传输是可靠和有序的。本文将深入解析TCP三次握手的步骤及其意义。 漫画TCP的三次握手 TCP连接的建立采用了三次握手的…

vite动态配置svg图标及其他方式集合

文章目录 前言使用vite-plugin-svg-icons动态配置安装插件引入图标下载新建组件svg-icon.vue使用 使用vue组件动态配置总结如有启发,可点赞收藏哟~ 前言 在配置化的情况下,图标配置也显得极为重要的 使用vite-plugin-svg-icons动态配置 参考vite-plugin…

C#中.NET 7.0 Windows窗体应用通过EF访问新建数据库

目录 一、 操作步骤 二、编写EF模型和数据库上下文 三、移植(Migrations)数据库 四、编写应用程序 五、生成效果 前文已经说过.NET Framework4.8 控制台应用通过EF访问已经建立的和新建的数据库。 前文已经说过.NET 6.0 控制台应用通过EF访问…

【Python大数据笔记_day09_hive函数和调优】

hive函数 函数分类标准[重点] 原生分类标准: 内置函数 和 用户定义函数(UDF,UDAF,UDTF) ​ 分类标准扩大化: 本来,UDF 、UDAF、UDTF这3个标准是针对用户自定义函数分类的; 但是,现在可以将这个分类标准扩大到hive中所有的函数,…

1. redis入门到放弃

使用shutdown命令的时候,会在关机的同时生成一个RDB文件,使数据不丢失。redis虽然有16个库,但是基本上只会用0库,用其他的库没有意义。集群只能在0号库做mysql的读写,大约为写入600笔/s,读2000笔/s 一、Redis全局命令…

本地mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

背景介绍: MySQL版本5.7,系统Win7,启动mysql服务时提示如下 解决方案 【会删除库中数据及mysql注册信息】: 1、删除原服务MySQL57 C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld --remove MySQL572、清空data 清空…

elementPlus实现暗黑与白亮主题切换

elementPlus上面默认是支持黑白主题切换的。只需要给html标签添加dark类名并且在mian.ts中导入css变量即可 我们就按照它推荐的useDark这个hook来 useDark使用起来非常简单,只需引入使用即可。vue直接就可以使用,无需做什么其他操作 中文网地址&#…

Apache阿帕奇安装配置

目录 一、下载程序 1. 点击Download 2. 点击Files for Microsoft Windows 3. 点击Apache Lounge 4. 点击httpd-2.4.54-win64-VSI6.zip ​编辑​ 5. 下载压缩包 6.解压到文件夹里 二、配置环境变量 1. 右键我的电脑 - 属性 2. 高级系统设置 3. 点击环境变量 4. 点击系统…

wpf devexpress 自定义统计

总计统计和分组统计包含预定义总计函数。这些函数允许你计算如下: 数据列的数量(Count) 最大和最小值(Max和Min) 总计和平均值(Sum和Average) 处理GridControl.CustomSummary 事件或者使用 GridControl.CustomSumm…

2024清理mac苹果电脑内存免费工具CleanMyMac X4.15

当你使用苹果电脑时,内存的优化和清理变得至关重要。随着时间的推移,我们的电脑内存可能会变得拥挤,导致性能下降。清理内存可以提高电脑的速度和反应能力,并确保它始终在良好状态下运行。本文将向您介绍怎么清理苹果电脑内存的方…

深度学习入门(第一天)——深度学习必备知识点

深度学习要解决的问题 人工智能、机器学习、深度学习的区别于联系 机器学习的流程: 数据提取 特征工程 建立模型 评估与应用 特征工程可以说是建模过程中,最重要的部分。 既然特征工程是最重要的,常规我们会做各种各样的特征,…

Google codelab WebGPU入门教程源码<5> - 使用Storage类型对象给着色器传数据(源码)

对应的教程文章: https://codelabs.developers.google.com/your-first-webgpu-app?hlzh-cn#5 对应的源码执行效果: 对应的教程源码: 此处源码和教程本身提供的部分代码可能存在一点差异。运行的时候,点击画面可以切换效果。 class Color4 {r: number;g: numb…

英伟达真是赢麻了,深夜推出最强AI芯片霸场 | 百能云芯

10月14日凌晨,英伟达在2023年全球超算大会(Supercomputing Conference,SC)上正式宣布,升级旗舰AI芯片,推出全新的H200芯片,以处理更强大的人工智能系统。包括亚马逊的AWS、Alphabet的Google Clo…

完全随机设计的方差分析

一、说明 实验设计在科学研究中发挥着至关重要的作用,使研究人员能够从数据中得出有意义的结论。一种常见的实验设计是完全随机设计(CRD),其特征是将实验单元随机分配到治疗组。CRD 的方差分析 (ANOVA) 是一种统计技术&#xff0c…

【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 map和set 1. 前言2. map和set介绍3. pair结构介…

一个开源的汽修rbac后台管理系统项目,基于若依框架,实现了activiti工作流,附源码

文章目录 前言&源码项目参考图: e店邦O2O平台项目总结一、springboot1.1、springboot自动配置原理1.2、springboot优缺点1.3、springboot注解 二、rbac2.1、概括2.2、三个元素的理解 三、数据字典3.1、概括与作用3.2、怎么设计3.3、若依中使用字典 四、工作流—…

pytorch文本分类(一):文本预处理

pytorch文本分类(一):文本预处理 本文为自己在鲸训练营答题总结,作业练习都在和鲸社区数据分析协作平台 ModelWhale 上。 🚩学习任务原链接在这里 相关数据链接:https://pan.baidu.com/s/1iwE3LdRv3uAkGGI…

企业工商四要素核验API的实现原理和功能介绍

引言 随着社会经济的不断发展,对企业信息的准确性和可信度要求也越来越高。为了有效防范企业信息不实和欺诈行为,企业工商四要素核验API应运而生。该API可以通过传入企业名称、社会统一信用代码、法人名称、法人身份证等信息,快速进行核验&a…