【数据归一化与标准化】

数据归一化与标准化

数据预处理是机器学习和数据分析中非常重要的一环,它能够有效地提高模型的性能和准确度。在数据预处理的过程中,数据归一化和标准化是两个常用的技术,它们可以将数据转换成一定的标准形式,有助于模型更好地学习数据的分布和特征。

1. 数据归一化

数据归一化,也称为最大-最小缩放,是一种线性转换方法,将原始数据缩放到一个特定的范围,通常是[0, 1]。其转换公式如下:

X n o r m = X − X m i n X m a x − X m i n X_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}} Xnorm=XmaxXminXXmin

其中, X n o r m X_{norm} Xnorm 是归一化后的数据, X X X 是原始数据, X m i n X_{min} Xmin X m a x X_{max} Xmax 分别是原始数据的最小值和最大值。

优点:

  • 消除量纲影响:数据归一化可以消除原始数据的量纲影响,确保所有特征在相同的范围内。这有助于避免某些特征对模型训练产生过大的影响,导致模型过于依赖某个特征。
  • 加速模型收敛:数据归一化可以使模型更快地收敛,特别是对于基于梯度的优化算法,如梯度下降算法。由于所有特征都在相同的尺度上,模型能够更快地找到最优解。

缺点:

  • 异常值敏感:数据归一化容易受到异常值的影响。如果原始数据中存在异常值,它们的缩放范围可能会显著影响归一化结果,导致大部分数据集中在较小的范围内。
  • 边界效应:数据归一化会将最大值和最小值映射到[0, 1]之间,当新数据落在比训练集中的最大/最小值还大或还小时,会导致数据无法正确归一化。

2. 数据标准化

数据标准化,也称为零-均值标准化,是一种将原始数据转换成均值为0,标准差为1的标准正态分布的方法。其转换公式如下:

X s t d = X − μ σ X_{std} = \frac{X - \mu}{\sigma} Xstd=σXμ

其中, X s t d X_{std} Xstd 是标准化后的数据, X X X 是原始数据, μ \mu μ 是原始数据的均值, σ \sigma σ 是原始数据的标准差。

优点:

  • 消除量纲影响:数据标准化能够消除原始数据的量纲影响,确保所有特征都具有相同的尺度,有助于避免某些特征对模型训练产生过大的影响。
  • 减少异常值影响:由于数据标准化是基于数据的均值和标准差进行缩放,因此对于存在异常值的数据集,标准化能够减少异常值对模型训练的影响。

缺点:

  • 信息损失:数据标准化会改变原始数据的分布,将其转换为均值为0,方差为1的正态分布。这可能导致一定程度的信息损失,尤其在一些需要保留原始数据分布信息的场景下可能影响模型表现。
  • 不适用于稀疏数据:对于稀疏数据,由于大部分元素为0,计算得到的标准差可能为0,从而导致无法进行标准化。

3. 实战项目与代码演示

在这个实战项目中,我们将使用Python和scikit-learn库来演示数据归一化和标准化的应用。

import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用数据归一化
scaler = MinMaxScaler()
X_train_normalized = scaler.fit_transform(X_train)
X_test_normalized = scaler.transform(X_test)# 使用数据标准化
std_scaler = StandardScaler()
X_train_standardized = std_scaler.fit_transform(X_train)
X_test_standardized = std_scaler.transform(X_test)# 使用逻辑回归模型
model = LogisticRegression()# 拟合归一化后的数据并预测
model.fit(X_train_normalized, y_train)
y_pred_normalized = model.predict(X_test_normalized)
accuracy_normalized = accuracy_score(y_test, y_pred_normalized)# 拟合标准化后的数据并预测
model.fit(X_train_standardized, y_train)
y_pred_standardized = model.predict(X_test_standardized)
accuracy_standardized = accuracy_score(y_test, y_pred_standardized)print("Accuracy with normalization:", accuracy_normalized)
print("Accuracy with standardization:", accuracy_standardized)

在这个实例中,我们使用了鸢尾花数据集,对特征进行了数据归一化和标准化,并分别使用了逻辑回归模型进行了测试。

结论

数据归一化和标准化都是常用的数据预处理技术,它们能够消除特征之间的量纲影响,加速模型收敛,提高模型性能。在实际应用中,我们需要根据数据的具体情况选择适合的方法。对于异常值较多的数据集,数据标准化可能更合适,而对于稀疏数据,数据归一化可能更为有效。在进行特征工程时,应该尝试不同的预处理方法,并结合模型的表现来做出最佳选择。

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

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

相关文章

【人工智能】深度优先搜索、代价一致搜索、深度有限搜索、迭代深度优先搜索、图搜索

【人工智能】无信息搜索—BFS 、代价一致、DFS、深度受限、迭代深入深度优先、图搜索 什么是搜索 搜索问题是指既不能通过数学建模解决,又没有其他算法可以套用或者非遍历所有情况才能得出正确结果。这时就需要采用搜索算法来解决问题。搜索就是一种通过穷举所有解的状态,来…

iClient3D for CesiumWebGL入门之使用vscode以服务方式运行调试

作者:超图研究院技术支持中心-于丁 iClient3D for Cesium&WebGL入门之使用vscode以服务方式运行调试 相信大家第一次使用SuperMap iClient3D for Cesium或SuperMap iClient3D for WebGL的时候,都遇到过和我一样的事情: 在文件夹中直接打…

django递归菜单

实例代码 from django.shortcuts import render from .models import Menudef menu_list(request):menus Menu.objects.filter(parentNone)def get_children(menu):return Menu.objects.filter(parentmenu)def get_menu_tree(menu):children get_children(menu)if children:r…

【图论】最小生成树

1、Kruskal算法 步骤与基本思路 (1)初始化所有点,每个点单独在一个点集。把所有边按权重排序 (2)按边权重从小到大遍历每一条边,如果这条边的两个顶点不在同一个点集,就将它们加到同一点集&a…

Docker网络模式

Docker网络模式 一、Docker网络实现原理二、Docker的网络模式1、host模式1.1 host模式原理1.2 host模式实操 2、Container模式2.1 模式原理 3、none模式4、bridger模式4.1 bridge模式的原理4.2 bridge实操 5、overlay模式6、自定义网络模式6.1 为什么需要自定义网络模式&#x…

[每日一氵] C++ 类 “xxx“ 不存在默认构造函数

80年不写C, 今天遇到 类 "xxx" 不存在默认构造函数 我都忘了怎么解决… customer.h 文件&#xff1a; #ifndef CUSTOM_H #define CUSTOM_H#include<string>class Customer{public:Customer(std::string name, int age);// virtual ~Customer();void printInf…

Debezium日常分享系列之:Debezium Operator

Debezium日常分享系列之&#xff1a;Debezium Operator 一、安装步骤二、快速入门示例三、DebeziumServerSpec 参考 Debezium Operator 提供了一种在 Kubernetes 或 Openshift 上运行 Debezium Server 的简单方法。 一、安装步骤 debezium operator 当前支持按名称空间安装。…

ctemplate,安装以及出现报错处理方式

简介 Google CTemplate是一个开源的C模板引擎&#xff0c;可以生成html文件&#xff0c;今天安装出现一些问题&#xff0c;在此将遇到的问题以及解决方式记录下来# 简介 安装 git clone https://github.com/OlafvdSpek/ctemplate.gitcd ctemplate./autogen.sh./configure ma…

mysql主主架构搭建,删库恢复

mysql主主架构搭建&#xff0c;删库恢复 搭建mysql主主架构环境信息安装msql服务mysql1mysql2设置mysql2同步mysql1设置mysql1同步mysql2授权测试用账户 安装配置keepalivedmysql1检查脚本mysql2检查脚本 备份策略mysqldump全量备份mysqldump增量备份数据库目录全量备份 删除my…

03. 自定义镜像 Dockerfile

目录 1、前言 2、构建镜像的方式 2.1、docker commit 2.1.1、先查看下当前的容器 2.1.2、生成该容器镜像 2.1.3、查看镜像列表 2.2、Dockerfile 2.2.1、创建Dockerfile文件 2.2.2、编写Dockerfile文件 2.2.3、构建镜像 2.2.4、使用该镜像生成容器 3、Dockerfile 3…

FTP与HTTP: 哪种协议更适合大文件传输?

随着互联网技术的发展&#xff0c;网络传输已成为了现代社会中不可或缺的一部分。无论是文本、图像、音频、视频等各种类型的数据&#xff0c;相应的传输协议也在不断地发展和更新。FTP&#xff08;File Transfer Protocol&#xff09;和HTTP&#xff08;Hyper Text Transfer P…

【密码学】二、古典密码

古典密码 1.置换密码1.1列置换密码1.2周期置换密码 2.代换密码2.1单表代换密码2.1.1凯撒密码2.1.2仿射密码 2.2多表代换密码2.2.1维吉尼亚密码2.2.2普莱费尔密码 3.轮转密码3.1恩尼格玛密码机Enigma3.1.1Enigma加密3.1.1Enigma解密 4.古典密码的分类5.古典密码的统计分析5.1单表…

【云原生】Prometheus之图形化界面grafana与服务发现部署

前言 上一篇文章中我们介绍了Prometheus的组件&#xff0c;监控作用&#xff0c;部署方式&#xff0c;以及如何通过在客户机安装exporter再添加监控项的操作。但是不免会发现原生的Prometheus的图像化界面对于监控数据并不能其他很好的展示效果。所以本次我们将介绍一款开源非常…

06-Vue基础之事件处理

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章…

Hive自定义函数

本文章主要分享单行函数UDF&#xff08;一进一出&#xff09; 现在前面大体总结&#xff0c;后边文章详细介绍 自定义函数分为临时函数与永久函数 需要创建Java项目&#xff0c;导入hive依赖 创建类继承 GenericUDF&#xff08;自定义函数的抽象类&#xff09;&#xff08;实现…

ffmpeg新旧接口对比--记录

https://www.cnblogs.com/schips/p/12197116.html ffmpeg新旧函数对比_鲲鹏私董会的博客-CSDN博客ffmpeg 视频解码流程及对应API使用_ffmpeg调用流程_音视频开发老马的博客-CSDN博客 FFmpeg编程--解码流程_ffmpeg解码流程_贝勒里恩的博客-CSDN博客[总结]FFMPEG视音频编解码零基…

HP惠普暗影精灵9笔记本原装出厂Win11系统预装专用OEM系统镜像

暗影9笔记本电脑原厂Windows11系统包 OMEN by HP 16.1英寸游戏本16-wf0000,16-wf0001,16-wf0003,16-wf0004,16-wf0006,16-wf0008,16-wf0009,16-wf0010,16-wf0011,16-wf0012,16-wf0028,16-wf0029,16-wf0007,16-wf0032,16-wf0036,16-wf0043 链接&#xff1a;https://pan.baidu.…

[SQL系列] 从头开始学PostgreSQL 自增 权限和时间

[SQL系列] 从头开始学PostgreSQL 事务 锁 子查询_Edward.W的博客-CSDN博客https://blog.csdn.net/u013379032/article/details/131841058上一篇介绍了事务&#xff0c;锁&#xff0c;子查询 事务有点像是原子操作&#xff0c;需要有完整性&#xff0c;要么全都完成了&#xff…

win11我们无法创建新的分区也找不到现有的分区

U盘重装系统的时候 提示&#xff1a;win11我们无法创建新的分区也找不到现有的分区 ShiftF10 &#xff0c;调出 命令提示符&#xff1b; diskpart list disk select disk 盘编号 clean convert gpt 参考&#xff1a;怎么解决我们无法创建新的分区也找不到现有的分区问题&#x…

STM32F407-- DMA使用

目录 1. DMA结构体 STM32F103&#xff1a; STM32F407&#xff1a; 2. F4系列实现存储器到存储器数据传输 1&#xff09;结构体配置&初始化 2&#xff09;主函数 补充知识点&#xff1a;关于变量存储的位置&#xff0c;关于内部存储器一般存储什么内容 3. F4系列实现…