Python数据标准化方法详解与实例分析
本文深入解析Python中常用的数据标准化方法,包括Min-Max归一化、Z-Score标准化以及针对稀疏和离群数据的MaxAbs与RobustScaler。通过具体代码实例展示StandardScaler的使用,并对比不同算法对数据结构及异常点的影响,帮助开发者根据数据特征选择最优标准化策略。
说明
数据标准化的核心目标是将原始数据转换为均值为0、标准差在1范围内的分布形态。
在标准化过程中,若数据集中存在少量异常点,由于整体数据量较大,这些异常点对平均值的影响微乎其微,因此方差的变化也相对较小。
实例
def stand_demo():
"""
标准化
:return:
"""
# 1. 获取数据
data = pd.read_csv('dating.txt')
data = data.iloc[:, :3]
print('data:\n', data)
# 2.实例化一个转换器类
transfer = StandardScaler()
# 3.调用fit_transform()
data_new = transfer.fit_transform(data)
print('data_new:\n', data_new)
return None
知识点扩充:
几种标准化方法:
归一化Max-Min
min-max标准化是对原始数据进行线性变换处理。设属性A的最小值为minA,最大值为maxA,将A的原始值x通过该标准化方法映射到区间[0,1]内的新值x',其计算公式为:
新数据 = (原数据 - 最小值) / (最大值 - 最小值)
该方法能够将数据归一化至特定区间内,同时保持原有的数据结构不变。
实现中心化Z-Score
这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行标准化处理。将属性A的原始值x使用z-score标准化转换为x'。
z-score标准化方法特别适用于属性A的最大值和最小值未知,或者存在超出取值范围的离群数据的情况。
新数据 = (原数据 - 均值) / 标准差
这种方法适用于大多数类型的数据,也是许多机器学习工具的默认标准化方式。标准化后的数据服从均值为0、方差为1的正态分布。然而,Z-Score属于中心化方法,会改变原有数据的分布结构,因此不适合用于处理稀疏数据。
在实际数据集中,常存在稀疏特征,表现为标准差较小且大量元素值为0。例如协同过滤中最常见的稀疏数据集,绝大部分数据均为0。若对稀疏数据采用中心化标准化,会破坏其稀疏结构。
用于稀疏数据的MaxAbs
最大值绝对值标准化(MaxAbs)依据最大值的绝对值进行标准化。假设原转换数据为x,新数据为x',则x' = x / |max|,其中max为x所在列的最大值。
该方法的数据区间为[-1, 1],且不破坏原数据结构的特点,因此同样适用于稀疏数据及稀疏矩阵的处理。
针对离群点的RobustScaler
当数据集中存在离群点时,若使用Z-Score进行标准化,结果往往不理想,因为离群点在标准化后丧失了其离群特性。
RobustScaler专门针对离群点进行标准化处理,该方法对数据中心化数据的缩放具有更强的参数控制能力和健壮性。
到此这篇关于Python数据标准化的实例分析的文章就介绍到这了,更多相关Python数据标准化是什么内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









