数据挖掘之标准化

简介

数据特征的标准化和归一化是数据预处理中常见的两种数据转换技术,它们的目的是使数据符合某种分布或范围,从而更适合于某些数据挖掘算法的使用。

标准化(Standardization)

也称为 Z-score 标准化
公式: z = x − μ σ z = \frac{x - \mu}{\sigma} z=σxμ
其中 z z z 是标准化后的数值, x x x 是原始数值, μ \mu μ 是特征的平均值, σ \sigma σ 是特征的标准差
标准化后,数据的分布具有 0 均值和 1 标准差的标准正态分布
常用于需要对特征进行比较的场景,如距离计算、回归分析等

为什么需要标准化

消除特征量纲的差异

不同特征可能有不同的量纲和取值范围,这会影响一些算法的性能。
标准化可以将所有特征转换到同一量纲,取值范围通常为标准正态分布 N(0, 1)。

提高算法收敛速度

很多机器学习算法,如梯度下降法,对于特征量纲敏感。
标准化可以使所有特征的重要性相当,从而提高算法的收敛速度。

防止数值溢出

一些算法,如逻辑回归和神经网络,对输入数据的数值大小很敏感。
标准化可以将数据映射到合适的范围,避免数值溢出的问题。

增强算法稳定性

标准化后,各特征对模型的影响力将更加均衡,避免某些特征主导预测结果。
这有助于提高算法的泛化能力和稳定性。

辅助特征选择和权重确定

标准化后,各特征的重要性可以通过权重大小直观地比较。
这对于特征选择和确定特征权重很有帮助。

标准化(Standardization)的常见方法

Z-score 标准化

公式: z = x − μ σ z = \frac{x - \mu}{\sigma} z=σxμ
其中 z z z 是标准化后的数值, x x x 是原始数值, μ \mu μ 是特征的平均值, σ \sigma σ 是特征的标准差
标准化后,数据服从标准正态分布 N(0, 1)

import numpy as npX = np.array([1, 2, 3, 4, 5])
X_scaled = (X - np.mean(X)) / np.std(X)
print(X_scaled)
# Output: [-1.41421356 -0.70710678  0.0        0.70710678  1.41421356]

Min-Max 标准化

公式: z = x − m i n ( x ) m a x ( x ) − m i n ( x ) z = \frac{x - min(x)}{max(x) - min(x)} z=max(x)min(x)xmin(x)
将数据线性映射到 [0, 1] 区间
与归一化的公式类似,但结果不完全一致

import numpy as npX = np.array([1, 2, 3, 4, 5])
X_scaled = (X - np.min(X)) / (np.max(X) - np.min(X))
print(X_scaled)  
# Output: [0.   0.25 0.5  0.75 1.  ]

Mean-Variance 标准化

公式: z = x − x ˉ s z = \frac{x - \bar{x}}{s} z=sxxˉ
其中 x ˉ \bar{x} xˉ 是样本均值, s s s 是样本标准差
与 Z-score 标准化类似,但不需要知道总体参数

import numpy as np# 假设有一个特征X
X = np.array([1, 2, 3, 4, 5])# Mean-Variance 标准化
X_scaled = (X - np.mean(X)) / np.std(X)print(X_scaled)
# Output:
# [-1.41421356 -0.70710678  0.          0.70710678  1.41421356]

让我们一步一步分析这个代码:

首先我们导入 numpy 库,用于进行数值计算。
假设我们有一个特征 X,包含 5 个数据点。
对 X 进行 Mean-Variance 标准化:
计算 X 的均值 np.mean(X)
计算 X 的标准差 np.std(X)
然后对每个数据点执行 (x - mean(X)) / std(X) 的计算
最终输出标准化后的结果 X_scaled。
这种标准化方法将数据转换为以 0 为中心、标准差为 1 的分布,这在很多机器学习算法中都非常有用。它可以帮助提高算法的收敛速度和稳定性。

Robust 标准化

公式: z = x − m e d i a n ( x ) I Q R ( x ) z = \frac{x - median(x)}{IQR(x)} z=IQR(x)xmedian(x)
中位数和四分位数范围代替了均值和标准差
对异常值更加鲁棒

import numpy as npX = np.array([1, 2, 3, 4, 5, 100])
X_scaled = (X - np.median(X)) / (np.percentile(X, 75) - np.percentile(X, 25))
print(X_scaled)
# Output: [-0.5 -0.25 0.   0.25 0.5  2.75]

Quantile 标准化

将数据映射到标准正态分布的对应分位数
可以使数据服从任意目标分布

import numpy as np
from scipy.stats import normX = np.array([1, 2, 3, 4, 5])
X_scaled = norm.ppf(np.percentile(X, np.linspace(0, 100, len(X))))
print(X_scaled)
# Output: [-1.33996439 -0.67448975  0.           0.67448975  1.33996439]

标准化的常用模块

scikit-learn (sklearn)

这是一个强大的机器学习库,提供了丰富的标准化方法。
主要包括 StandardScaler、MinMaxScaler、RobustScaler 等。
使用简单,适用于大多数标准化需求。

from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler# Z-score 标准化
X = [[1, 2, 3], [4, 5, 6]]
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
# Output: [[-1.22474487 -1.22474487 -1.22474487], [1.22474487 1.22474487 1.22474487]]# Min-Max 标准化 
X = [[1, 2, 3], [4, 5, 6]]  
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
# Output: [[0.         0.         0.        ], [1.         1.         1.        ]]# Robust 标准化
X = [[1, 2, 3], [4, 5, 6], [90, 100, 110]] 
scaler = RobustScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
# Output: [[-0.66666667 -0.66666667 -0.66666667], [-0.33333333 -0.33333333 -0.33333333], [1.         1.         1.        ]]

statsmodels:

这是一个统计建模和分析的库。
提供了standardize()函数,可以进行均值中心化和方差标准化。
与 sklearn 相比,更侧重于统计分析。

import numpy as np
from statsmodels.tools.tools import add_constant, standardize# 标准化
X = np.array([[1, 2, 3], [4, 5, 6]])
X_scaled = standardize(X)
print(X_scaled)
# Output: [[-1.22474487 -1.22474487 -1.22474487], [1.22474487 1.22474487 1.22474487]]

numpy:

NumPy 是Python的一个重要数值计算库。
可以使用 (X - X.mean()) / X.std() 实现 Z-score 标准化。
灵活性高,可以根据需求自行编写标准化代码。

import numpy as np# Z-score 标准化 
X = np.array([[1, 2, 3], [4, 5, 6]])
X_scaled = (X - X.mean(axis=0)) / X.std(axis=0)
print(X_scaled)
# Output: [[-1.22474487 -1.22474487 -1.22474487], [1.22474487 1.22474487 1.22474487]]

pandas:

Pandas 是Python中数据分析和操作的主要库。
提供了 (df - df.mean()) / df.std() 的标准化方法。
与 sklearn 相比,在处理DataFrame数据时更加方便。

import pandas as pd# 读取数据
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})# 标准化
df_scaled = (df - df.mean()) / df.std()
print(df_scaled)
#    A         B
# 0 -1.224745 -1.224745
# 1 -0.408248 -0.408248
# 2  1.632993  1.632993

scipy.stats:

SciPy 是Python科学计算的核心库,包含了 stats 子模块。
可以使用 scipy.stats.zscore(X) 实现 Z-score 标准化。
在处理概率分布和统计分析时很有用。

import numpy as np
from scipy.stats import zscore# Z-score 标准化
X = np.array([[1, 2, 3], [4, 5, 6]]) 
X_scaled = zscore(X, axis=0)
print(X_scaled)
# Output: [[-1.22474487 -1.22474487 -1.22474487], [1.22474487 1.22474487 1.22474487]]

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

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

相关文章

如何理解Spring Boot自动配置原理和应用?

我们知道,基于Spring Boot,我们只需要在类路径中引入一组第三方框架的starter组件,就能在Spring容器中使用这些框架所提供的各项功能。这在当下的开发过程中已经习以为常,但在Spring Boot还没有诞生之前却是不可想象的。如果我们使…

国内下载huggingface模型的几种方式

要将 huggingface.co 的域名自动映射到重定向到 hf-mirror.com,可以采取以下几种方法(以Ubuntu 为例): 设置环境变量:通过设置环境变量 HF_ENDPOINT 来指定下载时使用的镜像站。这种方法不需要修改系统的 DNS 设置&…

这款信创FTP软件,可实现安全稳定的文件传输

信创,即信息技术应用创新,2018年以来,受“华为、中兴事件”影响,国家将信创产业纳入国家战略,并提出了“28n”发展体系。“8”具体指金融、石油、电力、电信、交通、航空航天、医院、教育等主要行业。目前企业使用比较…

0527_C++1

练习1&#xff1a; 定义自己的命名空间my_sapce&#xff0c;在my_sapce中定义string类型的变量s1&#xff0c;再定义一个函数完成对字符串的逆置。 #include <iostream>using namespace std; namespace my_space {string s1"hello world";void my_strreverse…

对比表征学习(一)Contrastive Representation Learning

对比表征学习&#xff08;二&#xff09;Sentence Embedding 主要参考翁莉莲的Blog&#xff0c;本文主要聚焦于对比损失函数 对比表示学习&#xff08;Contrastive Representation Learning&#xff09;可以用来优化嵌入空间&#xff0c;使相似的数据靠近&#xff0c;不相似的数…

AWS数据库之DynamoDB

Amazon DynamoDB 是一款快速而灵活的 NoSQL 数据库服务&#xff0c;适合所有需要一致性且延迟不超过十毫秒的任意规模的应用程序。它是完全托管式云数据库&#xff0c;支持文档和键值存储模型。它拥有灵活的数据模型、可靠的性能以及自动的吞吐容量扩展功能&#xff0c;这使其成…

数据结构(四)双向链表

文章目录 一、概念二、无头双向链表示意图三、操作&#xff08;一&#xff09;定义结构体&#xff08;二&#xff09;创建链表1. 函数定义2. 注意点3. 代码实现 &#xff08;三&#xff09;插入1. 函数定义2. 注意点3. 代码实现 &#xff08;四&#xff09;删除1. 函数定义2. 注…

B端:ElementUI、AntDesign、若依等看腻了,来点不一样的。

现在对ElementUI、AntDesign和若依这些 UI 框架感到厌倦了&#xff0c;本次给大家分享一些更加个性化的UI界面。

MyBaitsPlus随笔

初识MyBaitsPlus 文章目录 初识MyBaitsPlus1.介绍优势 2 .简单使用1.添加依赖&#xff1a;2.配置数据源&#xff1a;3.编写实体类&#xff1a;4.编写Mapper接口&#xff1a;5.编写Service接口&#xff1a;6.编写Service实现类&#xff1a;7.使用Service进行操作&#xff1a;8.配…

干货|图生代码实例整理,让你的代码更高效

前言 “图生代码”。这项新功能允许开发人员直接利用产品设计图一键生成相应的代码&#xff0c;极大地提高了编程效率和研发速度。甚至会未来软件开发可能迎来一场革命性的变革。但图生代码究竟能直到什么程度&#xff1f;本文结合一款图生代码的实例程序整理了一些有代表意义…

C语言 数组——排序算法的函数实现

目录 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序

期望薪资30k字节java2面,A给B转账的同时B给A转账怎么并发量最高

一面 1、自我介绍 2、详细介绍一下自己的做的项目&#xff1f;根据项目提了一些问题 3、hashmap原理 4、B树原理&#xff1f; 5、final禁止重排序原理&#xff1f; 6、设计一个榨汁机类&#xff0c;面向对象怎么设计&#xff1f; 7、get、post区别&#xff0c;使用场景&…

已解决ModuleNotFoundError : No module named ‘pandas亲测有效!!!

已解决ModuleNotFoundError : No module named ‘pandas亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 报错问题解决思路解决方法 报错问题 在运行Python代码时&#xff0c;你可能会遇到以下报错信息&#xff1a; ModuleNotFoundError: No module named pandas这个…

华为昇腾310B初体验,OrangePi AIpro开发板使用测评

0、写在前面 很高兴收到官方的OrangePi AIpro开发板测试邀请&#xff0c;在过去的几年中&#xff0c;我在自己的博客写了一系列有关搭载嵌入式Linux系统的SBC&#xff08;单板计算机&#xff09;的博文&#xff0c;包括树莓派4系列、2K1000龙芯教育派、Radxa Rock5B、BeagleBo…

攒粒是什么?怎么用攒粒赚钱?

攒粒简介 攒粒的前身是91问问&#xff0c;隶属于上海道道永泉市场调查有限公司&#xff0c;是一家专业的全球在线调研服务公司&#xff0c;也是是国内排名前列的社区调查之一&#xff0c;10年在线调研&#xff0c;600万会员亲身体验&#xff0c;提供网络调查、市场调查、问卷调…

KT6368A蓝牙芯片AT命令会被透传出去,指令对为什么会被透传出去

一、简介 KT6368A再被连接之后&#xff0c;AT命令会被透传出去。被透传的这组AT命令是符合文档要求&#xff0c;不应被透传&#xff0c;实际却经常被透传。并且可以每次都复现 详细描述 有问题部分的串口数据监控结果如下&#xff1a;其中41 54 2B 42 4D 46 30 41 46 42 43 3…

从零自制docker-15-【实现 mydocker run -d 支持后台运行容器】

文章目录 实现目的莫名奇妙的问题对之前upper层出现root补充对run某些命令出现找不到文件或目录的原因代码效果 实现目的 docker run -d时容器在后台运行&#xff0c;而不会进入命令行交互形式 首先是需要添加-d选项然后设置当添加-d选项时候主进程不会等待子进程&#xff0c…

生意人【变通 VS 正常 、先义后利、正确的反省法】

冷 VS 热 冷&#xff1a;慢慢吞吞 热&#xff1a;见面热络 有钱大家花&#xff0c;越花越多 对什么的人也要讲什么样的话 获取的两种方式&#xff1a;变通 VS 正常 变通有变通的方式正常有正常的轨道 不敢做而来骂他说你不做、话不说满&#xff0c;人不自夸 先义后利…

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版 Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导 请访问原文链接&#xff1a;Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处…

Keras深度学习框架第三十讲:在KerasTuner中处理失败的训练

1、绪论 KerasTuner程序可能会运行很长时间&#xff0c;因为每个模型的训练可能需要很长时间。我们不希望程序仅仅因为一些试验随机失败就停止运行。 本文将讨论在KerasTuner中如何处理失败的训练&#xff0c;包括&#xff1a; 如何在搜索过程中容忍失败的训练如何在构建和评…