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

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

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 

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

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

相关文章

PDF处理控件Aspose.PDF功能演示:使用C#查找和替换PDF文件中的文本

使用“查找并替换”选项可以一次性替换文档中的特定文本。这样,您不必手动定位和更新整个文档中每次出现的文本。本文甚至更进一步,介绍了如何在PDF文档中自动查找和替换文本功能。特别是,将学习如何使用C#在整个PDF,特…

外汇天眼:失败的投资者经常陷入两个误区!

一、价格与价值的混淆 在金融领域,价格和价值往往被错误视为同义词。然而,审视市场时,我们会逐渐发现一个“安全差”的重要概念,这是由巴菲特的导师本杰明格雷厄姆提出的。 安全差是指股票的内在价值与市场价格之间的差异。内在…

WMS仓储管理系统与TMS系统整合后的优势

随着全球化的加速和供应链网络的日益复杂,仓库和运输成为企业运营中的两个关键环节。为了更高效地管理这两个环节,许多企业开始探索将WMS仓储管理系统和TMS运输管理系统整合的可能性。这种整合不仅可以提升仓库流程的可见性,还有助于改善调度…

1、24 个常见的 Docker 疑难杂症处理技巧(一)

1Docker 迁移存储目录 默认情况系统会将 Docker 容器存放在 /var/lib/docker 目录下 [问题起因] 今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现 /var/lib/docker 这个目录特别大。由上述原因,我们都知…

配置 ssh 免密登录

背景 从机器 A 使用 ssh 免密登录到机器 B,两台机器的 OS 都是 CentOS。其中机器 B 用作了一台 nodejs 的服务器,已经安装并运行了 sshd 服务,其用户名是 jmmem 我们想要实现在机器 A 上键入 ssh nodejs 就能免密登录到机器 B 的效果 机器…

python 最快多长时间学完?

以下是一个为零基础学员制作Python速成学习计划。这个计划包括了一些基本的Python概念和技能,以及一些实用的学习技巧。 第1周:基础入门 Python简介:了解Python的历史、特点、应用领域。 安装Python:在你的电脑上安装Python&am…

一个 不用充钱 也能让你变强的 VSCode 插件

今天给大家推荐一款不用充钱也能让你变强的 vscode 插件 通义灵码(TONGYI Lingma),可以称之为 copilot 的替代甜品 💪 什么是 通义灵码(TONGYI Lingma) 通义灵码(TONGYI Lingma)&am…

Martins 用法-利用现有的数学公式来绘制三相电机电流相位之间的关系

你可能会对这个主题很感兴趣。这背后的原因是我想分享一种我在花了大量时间研究诊断三相电机的方式时发现到的技术。我发现有一种非常简单的方式可以做到这一点,与Pico团队分享后,Steve Smith将它命名为Martins用法。 那么,让我们开始吧。 Ma…

Pinia 及其数据持久化 Vue新一代状态管理插件

黑马前端Vue新一代状态管理插件Pinia快速入门视频教程 Pinia主页 超级简单,不需要耐心 pinia :新一代的VueX 1. 安装 npm install pinia2. 在main.js中引入 import { createPinia } from pinia app.use(createPinia())3. 新建stores目录&#xff0c…

Camtasia2024喀秋莎微课制作神器新版本功能介绍

最近无论是b站,抖音,快手等视频软件中都有不少微课视频、电视剧解说横空出世,通过这些“热度”带来的收益也是无法估量的,很多自媒体博主月入上万惹人羡慕。 不少朋友也想在这股短视频洪流中分一碗羹,但又苦于技术跟不…

areadetector ADURL模块应用在面探测控制的初步应用

本章中讨论了使用ADURL控制面探测器Lambda的过程&#xff1a; ADURL的使用请见&#xff1a; EPICS -- areaDetector URL驱动程序-CSDN博客 需要启动一个ADURL的IOC程序&#xff0c;并且设置相关的插件中参数的值&#xff1a; # st.cm < envPaths < st_base.cmddbpf 1…

mysql操作 sql语句中的完整性约束有哪些,主键约束、外键约束、引用完整性约束,主键外键、唯一性

什么是约束&#xff1a;约束&#xff1a;就是约定哪些东西能填、怎么填&#xff1f;哪些东西不能填&#xff1f; 文章目录 前言&#xff1a;建表正文一、实体完整性约束1. 主键约束2. 唯一性约束3. 自增长约束4. 联合主键约束 二、域完整性约束三、引用完整性约束1. 外键约束 讲…

【kerberos】使用 curl 访问受 Kerberos HTTP SPNEGO 保护的 URL

前言&#xff1a; 大数据集群集成 Kerberos 后&#xff0c;很多 WEBUI 打开都会提示输入用户名和密码。由于我想获取 flink 任务的详情&#xff0c;且KNOX 并不支持Flink api&#xff0c;查看KNOX 直接的列表&#xff1a;https://docs.cloudera.com/cdp-private-cloud-base/7.…

算法实战:亲自写红黑树之二 完整代码

此文承接&#xff1a;算法实战&#xff1a;亲自写红黑树之一-CSDN博客 目录 一、项目结构 二、辅助代码a.h 三、红黑树代码rbtree.h 四、测试代码main.cpp 五、运行效果 六、代码详解 一、项目结构 这里给出的代码是实际可以运行的代码。 运行环境&#xff1a;VS2022&am…

波束形成中的主瓣宽度

阵列信号处理相关基础知识及主瓣宽度 导向矢量阵列方向图确知波束形成普通波束形成主瓣宽度确知波束形成主瓣宽度普通波束形成主瓣宽度 在讨论主瓣宽度之前&#xff0c;首先得了解导向矢量、波束形成、阵列方向图的概念&#xff0c;这些是阵列信号处理中最基础的知识。 导向矢量…

编译智能合约以及前端交互工具库(Web3项目一实战之三)

我们已然在上一篇 Web3项目灵魂所在之智能合约编写(Web3项目一实战之二) ,为项目写好了智能合约代码。 但身为开发人员的我们,深知高级编程语言所编写出来的代码,都是需要经过编译,而后外部方能正常调用。很显然,使用solidity这门新的高级编程语言编写出来的智能合约,也…

【机器学习】线性回归算法:原理、公式推导、损失函数、似然函数、梯度下降

1. 概念简述 线性回归是通过一个或多个自变量与因变量之间进行建模的回归分析&#xff0c;其特点为一个或多个称为回归系数的模型参数的线性组合。如下图所示&#xff0c;样本点为历史数据&#xff0c;回归曲线要能最贴切的模拟样本点的趋势&#xff0c;将误差降到最小。 2. 线…

基于旗鱼算法优化概率神经网络PNN的分类预测 - 附代码

基于旗鱼算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于旗鱼算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于旗鱼优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

云表|低代码软件开发“外挂”,新时代的黑科技

随着技术的日新月异&#xff0c;现代企业对于软件开发的需求愈加迫切&#xff0c;传统的软件开发方式已然无法满足快速迭代和创新的需求。在这种背景下&#xff0c;低代码开发平台如破茧而出&#xff0c;应运而生。这种平台通过提供可视化的开发工具和预构建的组件&#xff0c;…