獨熱編碼處理文字屬性

2022-05-07 02:12:08 字數 2047 閱讀 6411

當資料中存在文字屬性時,機器學習演算法不便於處理文字屬性,這時候需要把文字屬性轉換成數字。轉換時,如果屬性間存在順序關係,例如:(冷,暖,熱),可以直接使用整數編碼;但當屬性間沒有順序關係時,例如:(紅, 綠, 藍),則可使用獨熱編碼。

獨熱編碼:編碼屬性的值為1,其餘屬性的值為0

一、人工獨熱編碼

from

numpy import argmax

import numpy as np

data = '

hello world

'alphabet = '

abcdefghigklmnopqrstuvwxyz

'char_to_int = dict((c, i) for i, c in

enumerate(alphabet))

int_to_char = dict((i, c) for i, c in

enumerate(alphabet))

#整數編碼

integer_encoded = [char_to_int[char] for char in

data]

print

(integer_encoded)

#獨熱編碼

onehot_encoder =list()

for i in

integer_encoded:

letter = [0 for _ in

range(len(alphabet))]

print

(np.array(onehot_encoder))

#從獨熱編碼恢復資料(argmax-返回最大值的索引)

二、scikit-learn獨熱編碼

from numpy import

argmax

from numpy import

array

from sklearn.preprocessing import

labelencoder

from sklearn.preprocessing import

onehotencoder

#整數編碼

data = array(['

cold

', '

cold

', '

warm

', '

hot', '

warm

', '

cold

', '

hot', '

hot', '

warm

', '

cold'])

label_encoder =labelencoder()

label_encoded =label_encoder.fit_transform(data)

print

(label_encoded)

#獨熱編碼

onehot_encoder = onehotencoder(categories='

auto')

onehot_encoded = onehot_encoder.fit_transform(label_encoded.reshape(-1, 1))

onehot =onehot_encoded.toarray()

print

(onehot)

#恢復編碼

One Hot encoder獨熱編碼

ref 1 什麼是獨熱碼 獨熱碼,在英文文獻中稱做 one hot code,直觀來說就是有多少個狀態就有多少位元,而且只有乙個位元為1,其他全為0的一種碼制。在機器學習中對於離散型的分型別的資料,需要對其進行數位化比如說性別這一屬性,只能有男性或者女性或者其他這三種值,如何對這三個值進行數位化表達...

獨熱編碼函式

想用自己的資料進行獨熱編碼,一開始沒用官方的程式。from sklearn import preprocessing enc preprocessing.onehotencoder 想用這個函式的可以參考博主 我找的是github裡的乙個程式 可以參考下。貼上 def one hot y n cla...

獨熱編碼 One Hot Eocode

假設現在我們要對5張手寫數字進行分類,這些數字的標籤labels的範圍是0 9,形成 5,的行向量,為 5,4,3,8,7 labels 5,4,3,8,7 num classes 10 batch size tf.size labels labels表示的標籤,5張有5個標籤。batch size...