機器學習-特徵預處理-處理連續型數據

Introduction

  • 二值化(binarizer)

    • 根據閥值(threshold)將數值二元化(大於閥值設為1;小於or等於閥值設為0)
      • 用於處理連續型變量
        • 連續型變量劃分為二分類
        • 決定僅考慮某種現象存在與否
  • 分段(KBinsDiscretizer;分箱)

    • 將連續型數據劃分為不同分類變量
      • 例如:根據不同的年齡段分成老年、中年、青少年、小孩、幼齡

二值化(Binarizer)

  • from sklearn.preprocessing import Binarizer
  • Binarizer為特徵專用,不能使用一維數據,需進行reshape(-1,1)升維成二維 一列的數據
  • 實例化指定threshold
    • Binarizer(threshold=?)
    • 大於threshold值會設為1,小於等於threshold值會設為0

方法

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

分段(KBinsDiscretizer)

  • from sklearn.preprocessing import KBinsDiscretizer
  • 將連續型數據排序後,按順序分箱後編碼
  • KBinsDiscretizer為特徵專用,不能使用一維數據,需進行reshape(-1,1)升維成二維 一列的數據

實例化的重要參數

n_bins

每個特徵中分箱的個數

  • 預設為5,將連續型數據分為5類
  • 一次會被運用到所有fit進來的特徵矩陣
    • 若一次導入有10個feature的特徵矩陣,全部特徵都會被分為指定的類數別
    • 若希望不同特徵的分箱數不同,則必須實例化多個不同的分箱依據的KBinsDiscretizer轉換器

encode

編碼的方式

  • 預設為"onehot":返回sparse matrix,含有該類別的樣本為1,反之為0
    • 分為多少箱就有多少列
  • "ordinal":每個特徵(箱)被編碼為一個整數,返回一列含有不同整數編碼的箱的矩陣
  • "onehot-dense":做onehot編碼後,返回一個密集數組

strategy

用來定義箱寬的方式

  • 預設為"quantile":表示等位分箱,每個特徵中的每個箱內的樣本數量相同
    • 根據箱內樣本的數量進行分割
  • "uniform":表示等寬分箱,每個特徵中的每個箱最大值之間差為((特徵.max() - 特徵.min()) / (n_bins))
    • 根據數據的來進行分箱
  • "kmeans":表示按聚類分箱
    • 每個箱中的值到最近的一維k均值聚類的簇心的距離相同

方法

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

Reference

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