目录
特征的预处理
归一化
标准化
缺失值
特征的预处理
特征处理定义:通过特定的二统计方法(数学方法)将数据转换成算法要求的数据
归一化
sklearn归一化API:sklearn.preprocessing.MinMaxScaler
from sklearn.preprocessing import MinMaxScaler
def mm():
"""归一化处理"""
# mm = MinMaxScaler()
mm = MinMaxScaler(feature_range=(2,3))
data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data)
return None
if _name_=="_main_":
mm()
n个特征同等重要的时候:进行归一化
目的:使得某一个特征对最终结果不会造成更大影响
总结:注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。
标准化
特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内
方差为0:所有这个特征所有值都一样
对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小
from sklearn.preprocessing import MinMaxScaler,StandardScaler
def stand():
"""标准化缩放"""
std = StandardScaler()
data = std.fit_transform([[1.,-1.,3.],[2.,4.,2.],[4.,6.,-1.]])
print(data)
return None
if _name_=="_main_":
stand()
总结:在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景
缺失值
缺失值处理方法:
from sklearn.preprocessing import MinMaxScaler,StandardScaler,Imputer
import numpy as np
def im():
"""缺失值处理"""
# NaN, nan
im = Imputer(missing_values='NaN',strategy='mean', axis=0)
data = im.fit_transform([[1,2],[np.nan, 3],[7,6]])
print(data)
return None
if _name_=="_main_":
im()