什么是标准化,标准化规范化

文章目录数据标准化1 .实现标准化Max-Min2.实现中心化和正态分布Z-Score3.稀疏数据的MaxAbs4.离群点的RobustScaler5.标准化后的数据可视化6 .标准化方法的选择

数据标准化

1. 什么是标准化?

数据标准化是一种常见的数据预处理操作,目的是将不同标准的数据转换为统一标准或不同分布的数据,以减少规模、特征、分布差异等对模型的影响。 该操作也称为无量纲化

除了用作模型计算以外。 标准化数据也具有直接计算和生成复合指标的意义,是加权指标的必要步骤。

2. 为什么要将输入标准化?

在逻辑回归等以梯度和矩阵为中心的算法中,在支持向量机和神经网络、数据标准化可以加快求解速度的KNN、k均值聚类等距离类模型中,数据标准化可以提高模型的精度,而

3.怎么标准化?

数据标准化可以是线性的,也可以是非线性的。线性的无量纲化包括中心化(Zero-centered)处理和缩放处理(Scale)

中心化的本质是从所有记录中减去一个固定值。 也就是说,平移原始数据。 他不改变数据的分布结构,只改变其分布范围。

缩放的本质是通过用固定值除以将数据固定在一个范围内,即压缩或扩大原始数据。

1 .实现正规化的Max-Min Max-Min标准化方法是对原始数据进行线性变换,先将数据按照最小值中心化之后,再按照极差(最大值-最小值)缩放,将数据收敛到[0,1]之间。

该标准化方法的应用非常广泛,在指定得到的数据会完全落在[0,1]区间内范围的同时,可以很好地保持原来的数据结构。

sklearn使用preprocessing.MinMaxScaler来实现这一功能。 当然,也可以自己实现这个辅助算法。 有两种方法可以将数据规范化:

准备工作:

[1] : importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.preprocessingimportminmaxscaler,stal robust scaler [2] : data=PD.read _ CSV (data.txt (,sep=’\t ‘,header=None ) 3358www.)

[3] : minmax _ scaler=minmax scaler (data_scale _1=minmax _ scaler.fit _ transform ) data _ scale

[4]:data_scale_1_df.max(0)1. 01.0 dtype : float 64 [5] : data _ scale _1_ df.min ) 0.01.0

[6]

可见,用两种实现方法得到的数据完全一致

2 .实现中心化和正态分布的Z-Score Z-Score标准化是基于原始数据平均值和标准差的标准化。 原始数据按平均值中心化,然后按标准偏差缩放。sklearn实现

该方法适用于许多类型的数据,也是许多工具的默认标准化方法。查看最大值和最小值:

sklearn使用preprocessing.StandardScaler来实现此功能,但也可以自己实现。 集中处理数据有两种方法:

手动实现

[7] : zs core _ scaler=standardscaler (data _ scale _3=zs core _ scaler.fit _ transform ) data_scaler

> 查看均值和方差:

[8]:data_scale_3_df.mean()0 2.624567e-161 -6.249445e-16dtype: float64 [9]:data_scale_3_df.std()0 1.00051 1.0005dtype: float64

手动实现:

[10]:data_scale_4_df = (data-data.mean(axis=0))/data.std(axis=0) data_scale_4_df.head()

查看均值和方差:

[11]:data_scale_4_df.mean()0 7.259526e-151 -5.805356e-16dtype: float64 [12]:data_scale_4_df.std()0 1.01 1.0dtype: float64

  这里由于某种原因,虽然sklearn实现和手动实现的均值和方差都趋近于0和1,但是不知为什么有一些微小的误差。我怀疑是sklearn与pandas的精度有差别,如果有更好更准确的解释,请务必告知我,万分感谢!!!

3. 用于稀疏数据的MaxAbs

数据的稀疏性是指,数据中心包含0的比例,0越多,数据越稀疏。

  最大值绝对值标准化即根据最大值的绝对值进行标准化。将数据中的每一个特征按照该特征中绝对值最大的数值的绝对值进行缩放。这种方法与Max-Min方法用法类似,也是将数据落入一定区间,但该方法的数据区间为[-1,1]这种做法并没有中心化数据,所以不会破坏数据的稀疏性

sklearn实现:

[13]:maxabsscaler = MaxAbsScaler() data_scale_5 = maxabsscaler.fit_transform(data) data_scale_5_df = pd.DataFrame(data_scale_5) data_scale_5_df.head()

4. 针对离群点的RobustScaler

  在某些情况下,假如数据有异常值,我们可以使用Z-Score进行标准化。但是标准化之后的数据并不理想,因为异常点的特征往往在标准化之后容易失去离群特征。此时,可以使用RobustScaler针对离群点做标准化处理,该方法对数据中心化和数据的缩放鲁棒性有更强的参数控制。

鲁棒性,可以理解为当数据发生变化时,算法对数据变化的容忍度有多高。

sklearn实现:

[14]:robustscaler = RobustScaler() data_scale_6 = robustscaler.fit_transform(data) data_scale_6_df = pd.DataFrame(data_scale_6) data_scale_6_df.head()

5. 标准化后数据可视化 [15]:data = np.loadtxt(‘data.txt’, delimiter=’\t’) # 使用ndarray格式画图 data_list = [data, data_scale_1, data_scale_3, data_scale_5, data_scale_6] # 创建数据集列表 color_list = [‘black’, ‘green’, ‘blue’, ‘yellow’, ‘red’] # 创建颜色列表 merker_list = [‘o’, ‘,’, ‘+’, ‘s’, ‘p’] # 创建样式列表 title_list = [‘source data’, ‘minmax_scaler’, ‘zscore_scaler’, ‘maxabsscaler_scaler’, ‘robustscalerr_scaler’] # 创建标题列表 plt.figure(figsize=(16, 3)) for i, data_single in enumerate(data_list): # 循环得到索引和每个数值 plt.subplot(1, 5, i + 1) # 确定子网格 plt.scatter(data_single[:, :-1], data_single[:, -1], s=10, marker=merker_list[i],c=color_list[i]) # 自网格展示散点图 plt.title(title_list[i]) # 设置自网格标题

6. 标准化方法选择 如果要做中心化处理,并且对数据分布有正态要求,那么使用Z-Score方法如果要进行0-1标准化或者将要指定标准化后的数据分布范围,那么使用Max-Min标准化或MaxAbs标准化方式是比较好的方法,尤其是前者。如果要对稀疏数据进行处理,Max-Min标准化或者MaxAbs标准化是理想方法如果要最大限度保留数据集中的异常,那么使用RobustScaler方法更好

  大多数机器学习算法中,会使用Z-Score方法来对特征进行标准化。因为Max-Min标准化对异常值特别敏感。一般情况下,都会使用Z-Score标准化,如果要指定标准化后的数据分布范围,那么使用Max-Min标准化。

参考资料:《Python数据分析与数据化运营》
      菜菜的sklearn学习

关联文章

数据预处理Part1——数据清洗
数据预处理Part3——真值转换
数据预处理Part4——数据离散化
数据预处理Part5——样本分布不均衡
数据预处理Part6——数据抽样
数据预处理Part7——特征选择
数据预处理Part8——数据共线性
数据预处理Part9——数据降维

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

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