分类与回归的结合
Combination of classification and regression
我正在使用的数据集包含一个 8 传感器气体传感器阵列的读数。传感器的响应取决于气体刺激物(甲烷、乙烯等)和气体浓度(20 ppm、50 ppm 等)。该数据集由 640 个示例组成,每个示例的形状均为 shape=(6000,8),因为阵列上有 8 个传感器。
(sensor-array response to 100ppm of Methane)
我的任务是制作一个模型来预测传感器阵列读数的 class(该读数来自哪种气体),然后我想预测该气体的浓度。
到目前为止,我已经建立了一个基于 1D 卷积层的class化模型,它成功地class将示例分为四类(气体),准确率为 98%。
如何预测气体的浓度值?是否可以对 class 化的示例进行回归分析,或者我应该寻找一种完全不同的方法?
对于这个任务,我会像这样制作一个多输出神经网络:
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。
我正在使用的数据集包含一个 8 传感器气体传感器阵列的读数。传感器的响应取决于气体刺激物(甲烷、乙烯等)和气体浓度(20 ppm、50 ppm 等)。该数据集由 640 个示例组成,每个示例的形状均为 shape=(6000,8),因为阵列上有 8 个传感器。 (sensor-array response to 100ppm of Methane)
我的任务是制作一个模型来预测传感器阵列读数的 class(该读数来自哪种气体),然后我想预测该气体的浓度。
到目前为止,我已经建立了一个基于 1D 卷积层的class化模型,它成功地class将示例分为四类(气体),准确率为 98%。
如何预测气体的浓度值?是否可以对 class 化的示例进行回归分析,或者我应该寻找一种完全不同的方法?
对于这个任务,我会像这样制作一个多输出神经网络:
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。