sklearn preprocessing 資料預處理 OneHotEncoder
阿新 • • 發佈:2018-11-08
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
0. StandardScaler
去均值時,在測試集上進行預測時減去的均值是訓練集上得到的均值;
import sklearn.preprocessing as prepdef standard_scale(X_train, X_test): preprocessor = prep.StandardScaler().fit(X_train) X_train = preprocessor.transform(X_train) X_test = preprocessor.transform(X_test) return X_train, X_test
- 1
- 2
- 3
- 4
- 5
- 6
- 7
1. one hot encoder
<a href=“http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html”, target="_blank">sklearn.preprocessing.OneHotEncoder
one hot encoder 不僅對 label 可以進行編碼,還可對 categorical feature 進行編碼:
>>> from sklearn.preprocessing import OneHotEncoder>>> enc = OneHotEncoder()>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) >>> enc.n_values_array([2, 3, 4])>>> enc.feature_indices_array([0, 2, 5, 9])>>> enc.transform([[0, 1, 1]]).toarray()array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
為 OneHotEncoder 類傳遞進來的資料集:
[[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]
- 1
- 2
- 3
- 4
每一列代表一個屬性,fit 操作之後:
- 物件
enc
的n_values_
成員變數,記錄著每一個屬性的最大取值數目,如本例第一個屬性:0, 1, 0, 1
⇒ 2,0, 1, 2, 0
⇒ 3,3, 0, 1, 2
4
;- 即各個屬性(feature)在 one hot 編碼下佔據的位數;
- 物件
enc
的feature_indices_
,則記錄著屬性在新 One hot 編碼下的索引位置,- feature_indices_ 是對 n_values_ 的累積值,不過 feature_indices 的首位是 0;
進一步通過 fit 好的 one hot encoder 對新來的特徵向量進行編碼:
>>> enc.transform([[0, 1, 1]]).toarray()array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
- 1
- 2
- 前 2 位 1, 0,對 0 進行編碼
- 中間 3 位 0, 1, 0 對 1 進行編碼;
- 末尾 4 位 0, 1, 0, 0 對 1 進行編碼;