使用Pandas進行獨熱(One-Hot)編碼的理解

Series

編碼過程

將vec看作爲一個變量的4次抽樣得到向量:

  1. 查看該變量可以取幾種值 num = len(set(vec)),這裏num=3;最終的編碼結果用num位表示,這裏用3爲表示:xxx;
  2. 變量的不同取值按自然順序(數字大小,字母先後)進行排序:seq = sorted(set(vec));
  3. 取每次抽樣的取值,放到第二步得到的序列中,看該值在序列的哪一位相同,就將該位設置爲1,其餘的設置爲0.

代碼示例

import pandas as pd

if __name__ == '__main__':
    # vec = ('c', 'a', 'b', 'a')
    vec = list('caba')
    s = pd.Series(vec)

    print(pd.get_dummies(s))

運行結果

在這裏插入圖片描述

DataFrame

編碼過程

將matrix看作3個變量的4次抽樣——每列代表一個變量,每行是對3個變量的一次抽樣:

  1. 列舉每個變量的抽樣的不同取值,將其按自然順序排序後,按變量出現的次序進行拼接得到序列;
  2. 遍歷矩陣行,行中出現了哪些值,就將上步得到的序列的相應位置記爲1,其餘位置記爲0.

代碼示例

import pandas as pd

if __name__ == '__main__': 
    matrix= [list('abc'), list('bdc'), list('bac'), list('acc')]
    df = pd.DataFrame(matrix)

    print(pd.get_dummies(df))

運行結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章