關(guān)于one hot編碼的由來馁启、好處以及我們?yōu)槭裁匆跈C(jī)器學(xué)習(xí)中使用熔号,可以在網(wǎng)上很多地方找到說明秕磷。我們這里看看怎么樣使用scikit-learn來完成one hot 編碼曲秉。
第一種方法
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
首先需要使用 LabelEncoder() 將data 轉(zhuǎn)換成數(shù)字的標(biāo)簽,然后使用 OneHotEncoder()
data = ['北京', '上海', '廣州', '成都', '杭州', '深圳']
label_encoder = LabelEncoder()
label_encoded = label_encoder.fit_transform(data)
print(label_encoded)
one_hot_encoder = OneHotEncoder()
one_hot_encoded = one_hot_encoder.fit_transform(label_encoded.reshape(-1, 1)).toarray()
print(one_hot_encoded)
輸出的結(jié)果:
image.png
第二種方法:
scikit-learn 提供了第二種一步到位的方法熊赖。使用LabelBinarizer
from sklearn.preprocessing import LabelBinarizer
data = ['北京', '上海', '廣州', '成都', '杭州', '深圳']
label_binarizer = LabelBinarizer()
one_hot_encoded = label_binarizer.fit_transform(data)
print(one_hot_encoded)
輸出結(jié)果:
image.png
我們也可以通過 one-hot encoded vector 找到原來的文本類別
beijing = one_hot_encoded[[0]]
print(label_binarizer.inverse_transform(beijing))