【发布时间】:2019-04-05 10:38:55
【问题描述】:
我正在尝试使用 Keras 构建一个多类分类器。我不太确定我是否正确实施了它。 数据是这样的
标记时间序列变量 [0:25728}
index 0 1 2 3 4 25728
0 1 2.5 3.2 1.6 1.05 ........ 2.54
1 5 3.2 1.6 1.5 1.49 ........ 1.41
2 1 2.3 3.2 1.5 1.52 ........ 2.11
3 3 0.2 3.1 1.5 1.89 ........ 0.81
4 8 1.2 1.1 0.2 1.19 ........ 3.71
. 5 . . . . ........ .
. 7 . . . . ........ .
1323 5 . . . . ........ .
这里是代码。 我将数据拆分 68%,然后将 1D 数组重塑为 2D 数组。 为 384*67 = 25728 因此为一个标签形成一个矢量 384 x 67 的图像
x_train =x_train.reshape(x_train.shape[0],384,67)
x_test =x_test.reshape(x_test.shape[0],384,67)
train_label_y = df_train_y[2].values
test_label_y = df_test_y[2].values
train_Y = np.array(train_label_y[:], dtype=int)
test_Y = np.array(test_label_y[:], dtype=int)
Y_train = convert_to_one_hot(train_Y, C = 8)
Y_test = convert_to_one_hot(test_Y, C = 8)
x_train = x_train.reshape(x_train.shape + (1,))
x_test = x_test.reshape(x_test.shape + (1,))
input_shape = x_train.shape[1:]
model = Sequential()
model.add(Conv2D(2, kernel_size=(3, 3), padding='same', input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size=(3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, kernel_size=(3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(8, kernel_size=(3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(GlobalAveragePooling2D())
model.add(Dense(8, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
hist = model.fit(x_train, Y_train, batch_size=batch_size, epochs=nb_epochs, verbose=1)
score = model.evaluate(x_test, Y_test)
print("Accuracy: %.2f%%" % (score[1] * 100))
它给出了 96.16% 的准确率,但我不相信这是真的。 我想预测标签。
- 如何预测标签?
- 我做错了什么?
请帮忙!谢谢。
【问题讨论】:
标签: python keras time-series classification multilabel-classification