喀拉拉邦多标签分类的准确性很高,但预测较差

时间:2020-02-27 11:36:10

标签: machine-learning keras multilabel-classification

我遇到了多标签分类问题,我使用了以下代码,但是在第一个时期,验证准确性跃升至99%。我的整个输入是1245x1024,所以每一行表示一个频谱(因此有1245个频谱示例)。因此一个频谱是(1x1024)。输出是我的标签。我有245个不同的类(这里是元素)。一个光谱包含一个或两个元素。一种预测的一个输出是(1x245)

    x = pd.read_csv('spectrum_max2proSpund245.csv') 
   y1 = pd.read_csv('nuclides_max2proSpund245.csv', delimiter=';')

   num_features = 1024
   model = Sequential()
   model.add(Dense(230, kernel_initializer='normal', input_shape=(num_features,), 
        activation='tanh')) 
   model.add(Dropout(0.25))
   model.add(Dense(245, kernel_initializer='normal', activation='sigmoid')) 
   model.summary()

   X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=42, test_size=0.2)

这就是我如何编译模型

   model.compile(loss='binary_crossentropy',optimizer='Adam',metrics=['accuracy'])

那就是我如何适应和评估

   model.fit(X_train, y_train, epochs=20, validation_data=(X_test, y_test), batch_size=60)

   model.evaluate(X_test, y_test, batch_size=60)

模型评估和模型拟合具有相同的结果,但是当我手动查看预测时,可能只有19%的预测正确。我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

每个类中的个案数必须相同。如果一个班级比其他班级有更多案子,它将主导培训。在您的训练数据集中,列出所有课程以及每个课程有多少条记录。如果有任何不平衡,您可以尝试通过添加/减去数据或组合类来使它们不平衡。