Python 4种方法对不同数量级数据归一化

Python 4种方法对不同数量级数据归一化在机器学习和数据处理过程中 对不同数量级的数据进行归一化是一项重要的预处理步骤 归一化可以将数据缩放到同一范围 避免某些特征因数值较大而主导模型训练 Python 提供了多种方法对数据进行归一化 以下介绍一些常用的归一化方法以及 python

欢迎大家来到IT世界,在知识的湖畔探索吧!

在机器学习和数据处理过程中,对不同数量级的数据进行归一化是一项重要的预处理步骤。归一化可以将数据缩放到同一范围,避免某些特征因数值较大而主导模型训练。

Python 提供了多种方法对数据进行归一化,以下介绍一些常用的归一化方法以及python实现。

①MinMaxScaler:将所有数据缩放到0到1的范围,保留了每列数据的比例关系。

原理:通过线性变换将数据压缩到[0, 1]区间,公式为:

Python 4种方法对不同数量级数据归一化



欢迎大家来到IT世界,在知识的湖畔探索吧!

优点:保留原始数据分布,简单直观。

缺点:对异常值非常敏感,异常值会极大地影响缩放效果。

②StandardScaler:对数据进行标准化,使其均值为0,标准差为1,适用于假设数据符合正态分布的情况。

原理:对数据进行标准化处理,使其均值为0,标准差为1,公式为:

Python 4种方法对不同数量级数据归一化

其中,μ为均值,σ为标准差。

优点:适合正态分布数据,消除量纲影响。

缺点:对非正态分布的数据表现一般。
③MaxAbsScaler:按每列数据的最大绝对值进行缩放,保留了数据的稀疏性。

原理:根据每列数据的最大绝对值进行缩放,使数据范围在[-1, 1]之间,公式为:

Python 4种方法对不同数量级数据归一化

优点:适合稀疏数据,保留稀疏性。

缺点:对异常值依然敏感。

④RobustScaler:对数据的中位数和四分位距进行缩放,减少异常值对归一化的影响。

原理:基于中位数和四分位间距(IQR)对数据进行缩放,公式为:


Python 4种方法对不同数量级数据归一化

其中,IQR为第75百分位数减去第25百分位数。

优点:对异常值有较强的鲁棒性。

缺点:对于分布极端不均的数据,效果可能不理想。

下面是归一化的Python程序:

import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler, StandardScaler, MaxAbsScaler, RobustScaler # 生成不同数量级的数据 def generate_data(): np.random.seed(42) data1 = np.random.randint(1, 10, 100) # 数量级1-10 data2 = np.random.randint(100, 1000, 100) # 数量级100-1000 data3 = np.random.randint(10000, , 100) # 数量级10000- return np.vstack((data1, data2, data3)).T # 归一化方法 def apply_normalization(data): scalers = { "MinMaxScaler": MinMaxScaler(), # 将数据线性缩放到[0, 1]区间 "StandardScaler": StandardScaler(), # 标准化(z-score),均值为0,标准差为1 "MaxAbsScaler": MaxAbsScaler(), # 以最大绝对值缩放,范围[-1, 1] "RobustScaler": RobustScaler(), # 使用中位数和IQR缩放,减少异常值影响 } return {name: scaler.fit_transform(data) for name, scaler in scalers.items()} # 绘图函数 def plot_normalization(data, methods): fig, axs = plt.subplots(len(methods) + 1, 1, figsize=(12, 18)) # 原始数据 axs[0].plot(data, alpha=0.7) axs[0].set_title("Original Data (Different Scales)") axs[0].grid(True) # 绘制归一化后的数据 for i, (name, norm_data) in enumerate(methods.items(), start=1): axs[i].plot(norm_data, alpha=0.7) axs[i].set_title(f"Data Normalized with {name}") axs[i].grid(True) plt.tight_layout() plt.show() # 主程序 if __name__ == "__main__": data = generate_data() # 生成数据 normalized_data = apply_normalization(data) # 归一化处理 plot_normalization(data, normalized_data) # 显示结果

欢迎大家来到IT世界,在知识的湖畔探索吧!

效果如下:

Python 4种方法对不同数量级数据归一化

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/116006.html

(0)
上一篇 17分钟前
下一篇 2分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信