《机器学习》——数据标准化(0~1标准化,z标准化)

文章目录

数据标准化

一、什么是标准化

  • 数据标准化是一种数据预处理技术,用于将数据按照一定的规则进行变换,使得不同特征或变量具有可比性和一致性。
  • 作用
    • 消除量纲影响
      在实际数据集中,不同的特征可能具有不同的单位和数量级。例如,在一个包含身高(单位:厘米)和体重(单位:千克)的数据集中,身高的数值范围可能是 150 - 200,而体重的数值范围可能是 40 - 100。如果直接使用这些原始数据进行数据分析,如聚类或距离计算,身高的数值可能会因为其较大的数量级而在计算中占据主导地位,从而掩盖体重特征的重要性。数据标准化可以将这些不同量纲的数据转换到同一尺度上。
    • 提升模型性能
      在机器学习和数据挖掘中,许多算法(如 K - 近邻算法、支持向量机等)的性能依赖于数据的分布情况。标准化后的数据可以使模型更容易收敛,提高模型的准确性和稳定性。例如,在神经网络的训练过程中,标准化的数据有助于梯度下降算法更快地找到最优解,减少训练时间并且避免梯度消失或爆炸等问题。
    • 方便数据比较和融合
      当需要将来自不同数据源的数据进行合并或者比较时,数据标准化是必不可少的。例如,在金融领域,要整合不同银行的客户信用评分数据,这些数据可能由于银行采用的不同评分标准和尺度而无法直接比较。通过标准化,可以将这些数据转换到统一的标准下,便于进行综合评估。
  • 优点和缺点
    • 优点
      • 提高模型性能
        在机器学习算法中,如线性回归、神经网络等,标准化后的数据可以使模型更快地收敛。以梯度下降算法为例,标准化能够确保不同特征在更新参数时具有相似的步长,避免因某些特征的数值范围过大而导致梯度下降路径曲折,从而加速模型训练过程。例如,在预测房价的线性回归模型中,如果房屋面积(单位:平方米)和房间数量这两个特征没有进行标准化,房屋面积的数值范围可能远大于房间数量,这会使得模型在训练时过度关注房屋面积这个特征,而标准化后可以让模型更均衡地学习每个特征的重要性,提升预测准确性。
      • 增强数据可比性
        标准化后的数据能够方便地比较不同特征之间的相对差异。例如,在比较学生的各科成绩时,语文成绩(满分 150 分)和数学成绩(满分 100 分)的原始分数不具有直接可比性。通过标准化,可以将它们转换到相同的尺度下,比如 Z - score 标准化后,就能更直观地看出学生在这两门学科中的相对位置,是高于平均水平还是低于平均水平,进而综合评估学生的学习情况。
      • 便于数据融合和集成
        当整合来自多个数据源的数据时,标准化可以消除不同数据源由于量纲、数据分布等差异带来的影响。例如,在医疗数据整合中,不同医院的检查指标可能有不同的单位和正常范围。通过标准化,这些数据可以被整合到一个统一的框架下,便于后续的数据分析,如构建疾病诊断模型或进行健康风险评估。
      • 提升聚类和分类效果
        在聚类算法(如 K - Means 聚类)和分类算法(如支持向量机)中,标准化有助于提高算法的准确性。以 K - Means 聚类为例,标准化后的数据可以使聚类中心的初始化更加合理,并且在计算样本与聚类中心的距离时,能够更准确地反映样本之间的相似性。如果不进行标准化,某些特征可能会因为数值较大而主导聚类结果,导致聚类效果不佳。
    • 缺点
      • 丢失原始数据信息
        在标准化过程中,数据的原始尺度和分布信息会部分丢失。例如,通过最小 - 最大标准化将数据映射到 [0, 1] 区间后,无法直接从标准化后的数据中看出原始数据的具体数值范围。对于一些需要了解原始数据真实情况的应用场景,如数据审计或对数据原始分布特征有严格要求的统计分析,这可能会带来不便。
      • 依赖数据分布假设
        某些标准化方法对数据分布有一定的假设。例如,Z - score 标准化假设数据是正态分布或者近似正态分布。如果数据实际不符合这个假设,标准化后的结果可能不能很好地达到预期效果。比如,对于具有明显偏态分布的数据,Z - score 标准化可能会扭曲数据的相对关系,使得在后续的数据分析中产生误导。
      • 增加计算成本和时间
        对于大规模数据集,进行数据标准化需要额外的计算来确定标准化参数(如均值、标准差、最大值、最小值等),并且需要对每个数据点进行转换操作。这会增加数据预处理的时间和计算资源消耗。例如,在处理包含数百万条记录的数据仓库中的数据时,数据标准化可能会成为整个数据处理流程中的一个性能瓶颈。

二、常用标准化

0~1标准化

公式中x为原始数据,min(x)为一组特征值的最小值,max(x)为最大值。

0~1标准化的范围就像它的名字一样在[0-1]的范围。

在python中,可以使用sklearn.preprocessing.MinMaxScaler类来实现0~1标准化

例子:

python 复制代码
import numpy as np
from sklearn.preprocessing import MinMaxScaler

# 创建一个包含随机数值的二维数组,模拟特征数据集
# 假设有5个样本,每个样本有3个特征
np.random.seed(0)  # 抛出一个随机种子,为了让后面每次运行时生成的随机数值,都与第一次相同
data = np.random.rand(5, 3) * 10  # 生成一个5x3的数组,每个元素的值在0到10之间
print("原始数据:")
print(data)

# 使用MinMaxScaler进行归一化
min_max_scaler = MinMaxScaler()
data_min_max = min_max_scaler.fit_transform(data)
print("\nMinMaxScaler归一化后的数据:")
print(data_min_max)
"""
原始数据:
[[5.45374108 6.36285388 6.89790337]
 [4.22031847 9.29446541 1.72869836]
 [6.29878395 8.68105164 8.78970701]
 [7.65555541 3.81574752 1.61238819]
 [9.50247279 8.58981375 9.87706441]]

MinMaxScaler归一化后的数据:
[[0.23350749 0.4649092  0.63953082]
 [0.         1.         0.01407317]
 [0.39348822 0.88803699 0.86843315]
 [0.65034771 0.         0.        ]
 [1.         0.87138384 1.        ]]
"""

z标准化

  • Z标准化也称为Z-score标准化或标准差标准化是一种数据预处理技术,用于将数据转化为均值为0,标准差为1的标准正态分布。这种方法在数据分析和机器学习中非常常见,特别是当不同特征具有不同的尺度或单位时,通过Z标准化可以使这些特征在相同的尺度上进行比较和处理。
  • x 是原始数据。
  • μ 是所有样本数据的均值。
  • σ 是所有样本数据的标准差。
  • z 是转化后的数据,即Z分数。
  • 计算步骤
  • 计算均值:首先,需要计算给定数据集的所有样本的均值(μ)。
  • 计算标准差:然后,计算数据集的标准差(σ),它衡量了数据点与均值的偏差程度。
  • 应用公式:最后,使用Z标准化的公式将每个原始数据点转换为Z分数。
  • 在python中,可以使用sklearn.preprocessing.StandardScaler类的fit_transform方法来实现z标准化。
    例子:
python 复制代码
import numpy as np
from sklearn.preprocessing import StandardScaler

# 创建一个包含随机数值的二维数组,模拟特征数据集
# 假设有5个样本,每个样本有3个特征
np.random.seed(0)  # 抛出一个随机种子,为了让后面每次运行时生成的随机数值,都与第一次相同
data = np.random.rand(5, 3) * 10  # 生成一个5x3的数组,每个元素的值在0到10之间
print("原始数据:")
print(data)

# 使用StandardScaler进行标准化
scaler_Z = StandardScaler()
data_scaled = scaler_Z.fit_transform(data)
print("\nStandardScaler标准化后的数据:")
print(data_scaled)
"""
原始数据:
[[2.91800254 3.2360031  9.66065598]
 [7.47746281 4.00855141 2.03950532]
 [9.8433753  8.32004568 4.55501016]
 [6.00990907 9.91191497 4.61528516]
 [0.15924446 1.95696181 6.33065699]]

StandardScaler标准化后的数据:
[[-0.69405259 -0.73160863  1.67789759]
 [ 0.64479923 -0.48048456 -1.35200705]
 [ 1.33953196  0.92100707 -0.35192975]
 [ 0.21386292  1.43845911 -0.3279665 ]
 [-1.50414152 -1.14737299  0.35400572]]
"""

三、注意事项

  • 选择适当的方法:根据数据的特性和算法的需求选择合适的数据标准化方法。例如,如果数据集中存在异常值,Z标准化可能会受到影响,而最小-最大标准化则不受影响(但也可能因为异常值而改变缩放范围)。
  • 考虑数据分布:数据标准化会改变数据的原始分布。在解释标准化后的数据时,需要考虑到这一点。
  • 对测试集使用相同的参数:在训练集上进行数据标准化后,应使用相同的均值、标准差(对于Z标准化)或最小值、最大值(对于最小-最大标准化)来标准化测试集。
  • 避免数据泄露:在实际应用中,需要确保在训练模型之前进行数据标准化,以避免在标准化过程中引入测试集的信息,从而导致数据泄露。
相关推荐
桂月二二19 分钟前
解锁2025编程新高度:深入探索编程技术的最新趋势
前端·人工智能·flutter·neo4j·wasm
西电研梦30 分钟前
西安电子科技大学初/复试笔试、面试、机试成绩占比
人工智能·考研·面试·职场和发展·研究生·西电·西安电子科技大学
说私域34 分钟前
开源 AI 智能名片 2+1 链动模式商城小程序在商业营销中的心理博弈与策略应用
人工智能·小程序
爱上python的猴子35 分钟前
用python编写一个放烟花的小程序
开发语言·python·pygame
说私域37 分钟前
开源AI智能名片2+1链动模式S2B2C商城小程序在商业流量获取中的应用研究
人工智能·小程序
island13141 小时前
【计算机组成原理课程设计】:实验0 ROM仿真、实验1 验证74L181运算和逻辑功能、实验2 运算器 2、实验 3 跑马灯、实验4 模拟微程序实现指令
机器学习·课程设计·计算机组成原理
B站计算机毕业设计超人1 小时前
计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习
大数据·hadoop·python·深度学习·机器学习·数据分析·数据可视化
huake62 小时前
探索大型语言模型新架构:从 MoE 到 MoA
人工智能·程序人生
全域观察2 小时前
读“2024 A16Z AI 应用精选清单”有感——2025AI执行力之年
人工智能·新媒体运营·软件工程·内容运营·程序员创富
DX_水位流量监测2 小时前
城市供水管网多普勒超声波流量计,保障供水安全
大数据·运维·服务器·网络·人工智能·安全