【機器學習】keras中to_categorical函式解析
阿新 • • 發佈:2022-03-25
1.to_categorical的功能
簡單來說,to_categorical就是將類別向量轉換為二進位制(只有0和1)的矩陣型別表示。其表現為將原有的類別向量轉換為獨熱編碼的形式。先上程式碼看一下效果:
from keras.utils.np_utils import * #類別向量定義 b = [0,1,2,3,4,5,6,7,8] #呼叫to_categorical將b按照9個類別來進行轉換 b = to_categorical(b, 9) print(b) 執行結果如下: [[1. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 1. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 1. 0. 0. 0. 0. 0. 0.] [0. 0. 0.1. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 1. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 1. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 1. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 1. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 1.]]
to_categorical最為keras中提供的一個工具方法,從以上程式碼執行可以看出,將原來類別向量中的每個值都轉換為矩陣裡的一個行向量,從左到右依次是0,1,2,...8個類別。2表示為[0. 0. 1. 0. 0. 0. 0. 0. 0.],只有第3個為1,作為有效位,其餘全部為0。
2.one_hot encoding(獨熱編碼)介紹
獨熱編碼又稱為一位有效位編碼,上邊程式碼例子中其實就是將類別向量轉換為獨熱編碼的類別矩陣。也就是如下轉換
0 1 2 3 4 5 6 7 8 0=> [1. 0. 0. 0. 0. 0. 0. 0. 0.] 1=> [0. 1. 0. 0. 0. 0. 0. 0. 0.] 2=> [0. 0. 1. 0. 0. 0. 0. 0. 0.] 3=> [0. 0. 0. 1. 0. 0. 0. 0. 0.] 4=> [0. 0. 0. 0. 1. 0. 0. 0. 0.] 5=> [0. 0. 0. 0. 0. 1. 0. 0. 0.] 6=> [0. 0. 0. 0. 0. 0. 1. 0. 0.] 7=> [0. 0. 0. 0. 0. 0. 0. 1. 0.] 8=> [0. 0. 0. 0. 0. 0. 0. 0. 1.]