pandas中one hot編碼的神坑

2021-08-15 03:20:58 字數 853 閱讀 3224

機器學習中,經常會用到one-hot編碼。pandas中已經提供了這一函式。

但是這裡有乙個神坑,得到的one-hot編碼資料型別是uint8,進行數值計算時會溢位!!!

import pandas as pd

import numpy as np

a = [1, 2, 3, 1]

one_hot = pd.get_dummies(a)

print(one_hot.dtypes)

print(one_hot)

print(-one_hot)

1    uint8

2 uint8

3 uint8

dtype: object

1 2 3

0 1 0 0

1 0 1 0

2 0 0 1

3 1 0 0

1 2 3

0 255 0 0

1 0 255 0

2 0 0 255

3 255 0 0

正確的做法是,將其轉換成浮點:
one_hot = one_hot.astype('float')

print(-one_hot)

1    2    3

0 -1.0 -0.0 -0.0

1 -0.0 -1.0 -0.0

2 -0.0 -0.0 -1.0

3 -1.0 -0.0 -0.0

one hot編碼理解

one hot是比較常用的文字特徵特徵提取的方法。one hot編碼,又稱 獨熱編碼 其實就是用n位狀態暫存器編碼n個狀態,每個狀態都有獨立的暫存器位,且這些暫存器位中只有一位有效,說白了就是只能有乙個狀態。下面舉例說明 有四個樣本,每個樣本有三種特徵 feature1 feature2 featu...

onehot編碼解釋

one hot編碼,又稱為一位有效編碼,主要是採用n位狀態暫存器來對n個狀態進行編碼,每個狀態都由他獨立的暫存器位,並且在任意時候只有一位有效。one hot編碼是分類變數作為二進位制向量的表示。這首先要求將分類值對映到整數值。然後,每個整數值被表示為二進位制向量,除了整數的索引之外,它都是零值,它...

one hot 編碼的實現

對 mnist 手寫字元識別 資料集進行手寫數字分類,屬於多分類問題,手寫數字 0 9,共 10 類,從 mnist.pkl.gz 檔案中解析得到的字元影象 28 28 的標籤 label,或者目標值 只有 1 維,進行 one hot 編碼可將其編碼為 10 維,數字 0,編碼為 1,0,0,0,...