機器學習——資料特徵預處理
歸一化以及標準化
歸一化
特定:通過對原始資料進行變換把資料對映到(預設為[0,1])之間
公式:X'=(x-min)/(max-min) X''=X'*(mx-mi)+mi
注意:作用於每一列,max為一列的最大值,min為一列的最小值,那麼X''為最終結果,mx,mi分別為指定區間值預設mx為1,mi為0
sklearn歸一化API:sklearn.preprocessing.MinMaxScaler
- MinMaxScaler(feature_range=(0,1)...)
每個特徵縮放到給定範圍(預設[0,1])
MinMaxScalar.fit_transform(X)
- X:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
下面程式碼實現:
from sklearn.preprocessing import MinMaxScaler def mm(): """ 歸一化處理 :return:None """ mm=MinMaxScaler(feature_range=(2,3)) data=mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]]) print(data) if __name__=="__main": mm()
執行結果如下所示:
目的:使得一個特徵對最早結果不會造成更大影響
總結:注意在特定場景下最大值最小值是變化的,另外,最大值與最小值非常容易受異常點影響,所有這種方法魯棒性較差,只適合傳統精確小資料場景。
標準化
特點:通過對原始資料進行變換把資料變換到均值為0,方差為1範圍內
公式:X'=(x-mean)/C
注意:作用於每一列,mean為平均值,C為標準差
結合歸一化來談標準化
對於歸一化來說:如果出現異常點,影響了最大值和最小值,那麼結果顯然會發生改變
對於標準化來說:如果出現異常點,由於具有一定資料量,少量的異常點對於平均值的影響並不大,從而方差改變較小。
Sklearn特徵化API:skikit-learn:scikit-learn.preprocessing.StandardScaler
StandardScaler(...)
處理之後每列來說所有資料都聚集在均值0附近標準差差為1
- standardScaler.fit_transform(X)
X:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
- StandardScaler.mean_
原始資料中每列特徵的平均值
- StandardScaler.std_
原始資料每列特徵的方差
下面用程式碼實現:
from sklearn.preprocessing import StandardScaler
def stand():
"""
標準化縮放
:return:
"""
std=StandardScaler()
data=std.fit_transform([[1.,-1.,3.],[2.,4.,2.],[4.,6.,-1.]])
print(data)
return None
if __name__=="__main":
stand()
實現結果如下所示:
標準化總結:在已有樣本足夠多的情況下比較穩定,適合現在嘈雜大資料場景。
數值型資料:標準縮放:
1、歸一化
2、標準化
3、缺失值
類別型資料: one-hot編碼
時間型別: 時間的切分
缺失值
缺失值處理方法:
1.刪除:如果每列或者行資料缺失值達到一定的比例,建議放棄整行或者整列
插補:可以通過缺失值每行或者每列的平均值、中位數來填充
2、sklearn缺失值API:sklearn.preprocessing.Imputer
Imputer(missing_values='NaN',strategy='mean',axis=0)
完成缺失值插補
- Imputer.fit_transform(X)
X:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
下面用程式碼實現:
from sklearn.preprocessing import Imputer
import numpy as np
def im():
"""
缺失值處理
:return:
"""
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()
執行結果如下:
Imputer流程
1.初始化Imputer,指定“缺失值",指定填補策略,指定行或列
注:缺失值也可以是別的指定要替換的值
2.呼叫fit_transform