python - 用于预测的分类或回归
问题描述
我想训练一个神经网络从一个输入中预测类别/数字,这也是一个数字;所以映射是数字->数字(输入->输出)。
但是在考虑数据类型和值时,我不确定是将问题视为分类问题还是回归问题。
例如,数据的第一行如下所示:
由于我的目标范围为 0-14,我的第一种方法是将这个问题视为分类问题,我选择输出层的大小为 size = 15。
这是我的NN模型:
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten, Activation, Dropout, LSTM, Conv1D
model.add(Flatten())
model.add(Dense(8, activation='relu'))
model.add(Dense(15, activation='softmax'))
model.add(Activation('softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
model.summary()
history = model.fit(X_train, y_train, epochs=100, batch_size=128)
它总是预测相同的分类值:
准确率在几个 epoch 后收敛,在 20% 左右不再变化。
为什么模型总是预测同一个类别?我在这里想念什么?我应该将此问题视为回归任务吗?
解决方案
通常,数字(或任何数字)用于回归,标签(任何非数字)用于分类。
回归数据:
分类数据:
查看回归示例和分类示例中的数据类型。
推荐阅读
- django - 一条路线的 CSRF 令牌丢失或不正确,而另一条路线则没有
- hadoop - Hadoop 集群环境中 Mapreduce 作业的连接被拒绝
- python - 安装 spacy 时出现错误的幻数错误
- javascript - Chartist 折线图动画从底部开始
- sql-server - 并发错误 WinForms 绑定源导航器
- php - Ajax 调用在 PHP 中返回 500 内部服务器错误
- android - Android P - 从资产复制数据库后出现“SQLite:没有这样的表错误”
- javascript - 如何使用 angularjs 在 html 中插入 QlikSense 元素
- css - 在 Bootstrap4 输入组帮助文本不显示为块
- javascript - 使用类而不是标签和输入 id 选择和交换文件