【问题标题】:Combination of classification and regression分类和回归的结合
【发布时间】:2021-11-04 09:57:33
【问题描述】:

我正在使用的数据集包含 8 传感器气体传感器阵列的读数。传感器的响应取决于气体刺激(甲烷、乙烯等)和气体浓度(20 ppm、50 ppm 等)。该数据集由 640 个示例组成,每个示例的形状 =(6000,8),因为阵列上有 8 个传感器。 (sensor-array response to 100ppm of Methane)

我的任务是创建一个模型来预测传感器阵列读数的类别(该读数来自哪种气体),然后,我想预测该气体的浓度。

到目前为止,我已经建立了一个基于一维卷积层的分类模型,该模型成功地将示例分为四类(气体),准确率达到 98%。

如何预测气体的浓度值?是否可以对分类示例进行回归分析,还是应该寻找完全不同的方法?

【问题讨论】:

  • 您对传感器在不同浓度下的行为方式有任何事先了解吗?
  • 我不确定你到底是什么意思,但我只有 640 个“指纹”,而且我确实知道每个指纹的气体浓度。该数据集在archive.ics.uci.edu/ml/datasets/Twin+gas+sensor+arrays 上免费提供
  • 我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 machine-learning @ 中的介绍和注意事项987654324@.
  • @desertnaut 那样的话,或许应该迁移到ai.stackexchange.com而不是关闭?
  • 你的意思是要做一个1输入2输出的神经网络?一个输出用于分类,另一个用于回归?

标签: machine-learning regression


【解决方案1】:

对于这个任务,我会做一个这样的多输出神经网络:

from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model

inp = Input(shape=(n_features,))
hidden1 = Dense(20, activation='relu', kernel_initializer='he_normal')(inp)
hidden2 = Dense(10, activation='relu', kernel_initializer='he_normal')(hidden1)

out_reg = Dense(1, activation='linear')(hidden2)
out_class = Dense(n_class, activation='softmax')(hidden2)

model = Model(inputs=inp, outputs=[out_reg, out_class])
model.compile(loss=['mse','sparse_categorical_crossentropy'], optimizer='adam')
model.fit(X_train, [y_train_reg, y_train_class], epochs=150, batch_size=32, verbose=2)

一个输出用于回归,另一个用于分类。下图是神经网络架构图:

如果您不知道如何创建此类网络,请阅读documentation

【讨论】:

  • 这是两者中更好的答案。但我暂时不考虑,因为您还需要编辑损失函数。
猜你喜欢
  • 2020-01-14
  • 2016-09-22
  • 2019-05-02
  • 1970-01-01
  • 2019-07-02
  • 2020-03-30
  • 2016-04-17
  • 2016-02-27
  • 1970-01-01
相关资源
最近更新 更多