Keras:多类分类

时间:2017-02-15 03:05:40

标签: python keras

我关注herehere的例子,对Keras来说是全新的。它看起来很神奇 - 但我遇到了一些我不理解的事情。

我有一个8级分类问题。我的训练集有5120行和62列,最后一列是目标变量。

我的目标变量当前被编码为浮点数,因此我将它们转换为整数,然后使用to_categorical将其转换为模型的虚拟矩阵。结果是numpy.ndarray的形状(num_samples,num_classes + 1)。谁知道为什么?

以下是代码:

import numpy as np
from keras.utils.np_utils import to_categorical

dataset = np.loadtxt("train_pl.csv", delimiter=",")

# split into input (X) and output (Y) variables
X = dataset[:,0:61] #I have 5120 rows. 
Y = (dataset[:,62]).astype(int) #class labels 1 to 8 inclusive

#print Y.shape #(5120,)
#print np.unique(Y) #1 2 3 4 5 6 7 8 

y_binary = to_categorical(Y)

print y_binary.shape #(5120, 9) - why does this have 9 columns?

修改

我没理解给出答案的原因是我不明白Keras实际上将类标签解释为数字。例如,由于我的课程标记为1到8,因此Keras会查看标签' 1'并且说'1 - 我会把它放在' 1'在单热矢量中的位置,如下所示:0 1 0 0 0 0 0 0 0.它与' 2':0 0 1 0 0 0 0 0 0,最多8相同。 #39;为什么还有一个额外的专栏:处理第0个'情况,在映射中不存在。从技术上讲,接受的答案解释说,这只是提供了更多细节。

1 个答案:

答案 0 :(得分:0)

因为to_categorical将类向量(整数从0 转换为nb_classes)转换为二进制类矩阵,以便与here中记录的categorical_crossentropy一起使用。