sklearn特征预处理:归一化和标准化
特征预处理:通过一些转换函数,将特征数据转换成更加适合算法模型的特征数据。API:sklearn.preprocessing
数值型数据的无量纲化:
1、归一化:x_new = (x - min)/(max - min),如果将其映射到指定的区间(a,b),则:x_new_new = x_new * (b-a) + a,一般是映射到(0,1),则:x_new_new = x_new。
归一化的缺点:如果数据中有异常值(最大值和最小值),影响比较大,鲁棒性比较差。
2、标准化:x_new = (x - mean)/bzc,bzc:标准差。标准化处理之后,数据的平均值是0,标准差是1。
标准化受异常值影响比较小,适用于数据多的场合。
以下是用sklearn模块进行归一化和标准化的示例代码:
from sklearn.preprocessing import MinMaxScaler,StandardScaler
import pandas as pd
import numpy as np
def minmax_demo():
#归一化
#获取数据
data = pd.read_csv('data.txt')
data = data.iloc[:,:3] #只需要前3列的特征数据,目标数据不需要
#实例化一个转换器类
transfer = MinMaxScaler(feature_range=[0,1])
#调用fit_transform
data_new = transfer.fit_transform(data)
print(data_new)
return None
def standard_demo():
#标准化
#获取数据
data = pd.read_csv('data.txt')
data = data.iloc[:,:3] #只需要前3列的特征数据,目标数据不需要
#实例化一个转换器类
transfer = StandardScaler()
#调用fit_transform
data_new = transfer.fit_transform(data)
print(data_new)
return None
if __name__ == "__main__":
#minmax_demo()
standard_demo()