前言:
数据标准化指的是将不同尺度、不同单位或不同范围的数据转化为统一的标准数值,以便进行比较和分析。
#本文用的是泰塔尼克号的数据集 可以从kaggle上找 链接:传送门
数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:
一、min-max标准化(Min-Max Normalization)
也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:
其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
二、Z-score标准化方法
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:
其中
为所有样本数据的均值,
为所有样本数据的标准差。
归一化(Normalization 或 Min-Max Scaling)
数据归一化是将数据x按照最小值中心化后,再按照极差(最大值-最小值)进行缩放,最终数据会被收敛到【0,1】之间。
归一化公式如下:
三: 小数标准化
小数标准化(min-max normalization)是一种常见的数据标准化方法之一,通过对原始数据的线性变换将其映射到[0,1]区间上。
小数标准化的优点是简单易行,能够有效地把数据压缩到[0,1]区间内,便于进行后续处理。但是需要注意,如果原始数据中存在极端值或离群值,可能导致归一化结果出现较大的波动,因此在实际应用中需要根据具体情况选择合适的数据标准化方法。
def MinMaxScale(data):
return(data-data.min())/(data.max()-data.min())
MinMaxScale(data['Fare'])
四:标准化和归一化区别:
首先标准化和归一化都不会改变数据分布,只是对数据进行线性无量纲处理,通过相应的缩放和平移使数据发生改变,但并没有改变原始数据的排列顺序。
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 创建数组
data_rn = np.random.randint(-10, 10, 10).reshape(5, 2)
plt.subplots(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(data_rn);
plt.subplot(1, 2, 2)
sns.distplot(data_rn);
# 归一化
scales_mm = MinMaxScaler()
data_rn_new = scales_mm.fit(data_rn).transform(data_rn)
# 标准化
scales_ss = StandardScaler()
data_rn_new1 = scales_ss.fit(data_rn).transform(data_rn)
plt.subplots(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(data_rn_new);
plt.subplot(1, 2, 2)
plt.plot(data_rn_new1);
plt.subplots(figsize=(10, 4))
plt.subplot(1, 2, 1)
sns.distplot(data_rn_new);
plt.subplot(1, 2, 2)
sns.distplot(data_rn_new1);