1. 程式人生 > >sklearn preprocessing 資料預處理 OneHotEncoder

sklearn preprocessing 資料預處理 OneHotEncoder

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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 操作之後:

  • 物件encn_values_成員變數,記錄著每一個屬性的最大取值數目,如本例第一個屬性:0, 1, 0, 1 ⇒ 2,0, 1, 2, 0 ⇒ 3,3, 0, 1, 2
    4
    • 即各個屬性(feature)在 one hot 編碼下佔據的位數;
  • 物件 encfeature_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 進行編碼;
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述