什么是特征预处理?为什么我们要进行归一化/标准化? 为了实现无量纲化,量纲特别大的影响特别大,不同规格的数据转化为统一规格
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler
一、归一化
def minmax_demo():
'''
归一化
:return:
'''
#1.获取数据
data = pd.read_csv("dating.txt",sep="\t");
data = data.iloc[:,:3]
# print(data)
#2.实例化一个转化器类
transfer = MinMaxScaler(feature_range=[0,1])
#3.调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n",data_new);
return None
如果有异常值(最大值或最小值),另外最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精小数据场景。 所以用标准化(X-mean)/std 标准差:集中程度
二、标准化
def stand_demo():
'''
标准化
:return:
'''
#1.获取数据
data = pd.read_csv("dating.txt",sep="\t");
data = data.iloc[:,:3]
# print(data)
#2.实例化一个转化器类
transfer = StandardScaler()
#3.调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n",data_new);
return None
所以 对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小 在已有样本足够多的情况下比较稳定,适合现代嘈杂的大数据场景