【发布时间】:2018-04-23 22:28:41
【问题描述】:
我最近开始在 R 中尝试使用 Keras,并构建了一个简单的预测模型。我得到了大约 85% 的合理准确度,但该模型为我的测试数据中的每个条目预测了完全相同的结果。
输入数据由 1000 行和 46 列数字指标组成(缩放到 0 和 1 之间)。 结果(即y变量)由两列组成,分别为“WIN”和“LOSE”,取值为1或0。如果“WIN”等于1,则“LOSE”必须等于0。
模型结构:
`model <- keras_model_sequential()
model %>%
layer_dense(units = 5, activation = "relu", input_shape = c(46)) %>%
layer_dropout(rate = 0.1) %>%
layer_dense(units = 25, activation = "relu") %>%
layer_dropout(rate = 0.05) %>%
layer_dense(units = 10, activation = "relu") %>%
layer_dropout(rate = 0.05) %>%
layer_dense(units = 6, activation = "relu") %>%
layer_dropout(rate = 0.05) %>%
layer_dense(units = 2, activation = "softmax")`
然后我使用以下命令运行模型:
model %>% compile(loss = "categorical_crossentropy",optimizer =optimizer_rmsprop(),metrics = c("accuracy"))
history <- model %>% fit(x_train, y_train, epochs = 30, batch_size = 128, validation_split = 0.2)
然后我用以下方法分析模型准确率,得到 85% 的结果:
model %>% evaluate(x_test, y_test,verbose = 0)
最后我做一些预测:
model %>% predict_classes(x_test)
其中“x_test”由 500 行组成,也有 46 个数字列。我用上面的代码行得到的预测输出是一个向量,等于“x_test”中的行数,但所有的值都是= 1(我知道这不可能是真的,因为这不会产生甚至接近的准确性85%)。
关于我做错了什么有什么想法吗?
谢谢!
【问题讨论】:
-
你的数据集平衡还是稀有类?
标签: r machine-learning keras neural-network classification