【机器学习】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.]

浙公网安备 33010602011771号