sklearn-3.預處理數據

導入數據之后要做的是預處理,sklearn.preprocessing,主要分為幾個方面。
1.缺失值的處理
缺失值我覺得用pandas來處理更方便,pandas.fillna,method有前后填充,用統計值特定值填充都比較方便,處理好了再轉numpy。
sklearn也有相應api-Imputer 處理。
網友提供的用法

import numpy  as np  
from sklearn.preprocessing import  Imputer  
imp=Imputer(missing_values='NaN',strategy='mean',axis=0)  
x=np.array([[1,2],  
           [np.nan,3],  
           [7,6]])  
imp.fit(x)  
print(x)  
print(imp.transform(x)) 

2.歸一化和標準化
我前面一直覺得歸一化MinMaxScaler()和標準化preprocessing.StandardScaler()干的是同一件事情,因為他們都能解決量綱不一樣的問題,后來才專門看了二者區別,發現不太一樣。

歸一化與標準化

image.png

知乎的這個回答我覺得說的非常到位了。知乎 歸一化與特征化

標準化會保留整個信息特征,均值為0,標準差為1。在已有樣本足夠多的情況下比較穩定,適合現代嘈雜大數據場景
歸一化會使數據在[0,1]范圍內,魯棒性較差,只適合傳統精確小數據場景。缺點是,最大值與最小值非常容易受異常點影響,它會丟失一些信息,特別對于那些異常的點。
還有一個normalize,正則化用于文本分類和聚類處理。

from sklearn import preprocessing
scaler = preprocessing.StandardScaler().fit_transform(data_x)
max_min = preprocessing.MinMaxScaler().fit_transform(data_x)
print(scaler)
print(max_min)

我認為什么都可以試試,按照前文所說,一般先用標準化,然后訓練數據,看看效果,不行,再試試別的,或者先歸一再標準都是可以的,一切以最后效果為準。

3.二值化,分類特征編碼

分類特征編碼針對文字轉數字分類比如把衣服尺碼變成0,1,2,這種,二值化針對數值轉數字分類,比如60分及格,設置閾值分類

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。