【问题标题】:How to build a neural networks model to classify data in python如何构建神经网络模型以在 python 中对数据进行分类
【发布时间】:2020-09-02 04:48:56
【问题描述】:

我正在尝试建立一个模型来分类一些数据(4 个类)。
这是我尝试过的:

from keras.models import Sequential
from keras.layers import Dense


# dividing X, y into train and test data
X_train, X_test, y_train, y_test = train_test_split(X_data, y_target, random_state=0)

# define the keras model
model = Sequential()
model.add(Dense(64, input_dim=9, activation='relu'))
model.add(Dense(4, activation='softmax')) 
# compile model
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the model on the dataset
train_history = model.fit(X_train, y_train, epochs=100, batch_size=20, verbose=0, validation_data=(X_test, y_test))
# evaluate the keras model
_, accuracy = model.evaluate(X_data, y_target, verbose=0)
print('Accuracy: %.3f' % (accuracy*100))

我收到此错误:

Received a label value of 4 which is outside the valid range of [0, 4).

有人可以帮我理解我的模型有什么问题吗?

【问题讨论】:

  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。
  • 你使用什么数据?您使用标签 0,1,2,31,2,3,4 吗?模型需要标签0,1,2,3,但它得到4
  • 谢谢@furas。它在我将最后一层更改为 5 时起作用。这意味着,我猜它从 0 开始计数到 ​​4。(1)如何从中获取混淆矩阵,以便我可以看到输出数组? (2) 如果是单个类,我会在最后一层给出 1,而不是 0。那么,当我有 4 个类时,为什么它与值为 5 的最后一层一起工作?
  • 我使用了标签 1、2、3、4
  • 您将不得不更改为 0,1,2,4,但使用 pandas 没问题 - df["label"] = df["label"] - 1

标签: python tensorflow machine-learning keras neural-network


【解决方案1】:

感谢@furas,我解决了我的问题,通过使用 pandas 将标签从 [1 2 3 4] 更改为 [0 1 2 3]df["label"] = df["label"] - 1

【讨论】:

    【解决方案2】:

    实际上,如果您使用train_test_split 从同一帧中拆分数据,则不应该出现此错误。请再次检查数据。还要确保在train_test_split 中使用stratifyoption。

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 2021-05-10
      • 1970-01-01
      • 2014-03-28
      • 2019-06-18
      • 2022-11-06
      • 2020-05-16
      • 2019-08-26
      • 2014-07-16
      相关资源
      最近更新 更多