1. 程式人生 > 其它 >【機器學習】keras中to_categorical函式解析

【機器學習】keras中to_categorical函式解析

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.]