数据标准化
一、什么是标准化
- 数据标准化是一种数据预处置惩罚技能,用于将数据按照肯定的规则进行变更,使得不同特性或变量具有可比性和一致性。
- 作用
- 消除量纲影响
在现实数据集中,不同的特性可能具有不同的单位和数目级。比方,在一个包含身高(单位:厘米)和体重(单位:千克)的数据集中,身高的数值范围可能是 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标准化
例子:
- 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标准化。
例子:
- 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标准化)或最小值、最大值(对于最小-最大标准化)来标准化测试集。
- 制止数据泄漏:在现实应用中,需要确保在训练模子之前进行数据标准化,以制止在标准化过程中引入测试集的信息,从而导致数据泄漏。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |