機器學習-特徵預處理(處理分類型數據)-編碼(Encode)

Introduction

  • 將文字型的數據轉換為數值型數據

分類標籤轉換為分類數值(LabelEncoer)

  • 為標籤(Label)專用的,能夠將文字分類轉換為分類數值
  • 位於sklearn.preprocessing
  • 實例化成物件後,因其接受的數據為標籤,所以允許一維數據的輸入
    • 不用將其轉換為二維 一列的數據

方法

與其他轉換器(transformer)一樣皆具有fit_transformfittransforminverse_transform 等方法

屬性

.classes_

  • 查看標籤中有哪些類別
  • LabelEncoder.classes_

分類特徵轉換為分類數值(OrdinalEncoder)

  • 為特徵專用的,將文字分類特徵轉換為數值
  • 位於sklearn.preprocessing
  • 不允許導入一維的數據

方法

與其他轉換器(transformer)一樣皆具有fit_transformfittransforminverse_transform 等方法

屬性

.categories_

  • 查看各個特徵中有哪些類別
  • OrdinalEncoder.categories_

one-hot編碼(OneHotEncoder)

  • 用作表示互相獨立且不可計算的變量,例如性別,進船的艙門等
  • 位於sklearn.preprocessing
  • OneHotEncoder(categories="auto")
    • categories:0.20版本可以直接輸入"auto"會自動遍歷特徵有多少類;0.19版本須用list明確指定各個特徵含有多少類別

方法

與其他轉換器(transformer)一樣皆具有fit_transformfittransforminverse_transform 等方法

transform 與 fit_transform

  • 其會將載入的數據進行one-hot編碼後輸出,輸出的為sparse matrix
  • 如欲輸出像前面兩種編碼器的ndarray型式的話,需進行toarray()
    • data_array = OneHotEncoder.fit_transform(data).toarray()

inverse_transform

  • 依然可以進行還原

get_feature_names

  • 查看onehot編碼後的 sparse matrix 各列(column)對應的原特徵的類別
  • OneHotEncoder.get_feature_names()

tips

  • 可對標籤Label進行one-hot編碼
    • 使用sklearn.preprocessing.LabelBinarizer
    • 在實際處理時並不常見

Reference

  1. http://www.peixun.net/view/1281.html