標籤轉換爲獨熱碼的三種方法Python

from keras.datasets import reuters
import numpy as np


(train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)

方法一:自己寫

def to_one_hot(label, dimension=46):
    results = np.zeros((len(label), dimension))
    for i, label in enumerate(label):
        results[i, label] = 1.
    return results


one_hot_train_label = to_one_hot(train_labels)
one_hot_test_label = to_one_hot(test_labels)
print(one_hot_train_label[0])

方法二:OneHotEncoder()

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(sparse=False)
#一個train_data含有多個特徵,使用OneHotEncoder時,特徵和標籤都要按列存放, sklearn都要用二維矩陣的方式存放
one_hot_train_label2 = enc.fit_transform(train_labels.reshape(-1, 1))   # 如果不加 toarray() 的話,輸出的是稀疏的存儲格式,即索引加值的形式,也可以通過參數指定 sparse = False 來達到同樣的效果
print(one_hot_train_label2[0])

方法三:to_categorical()

from keras.utils.np_utils import to_categorical

one_hot_train_label3 = to_categorical(train_labels)
print(one_hot_train_label3[0])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章