我遇到了多标签分类问题,我使用了以下代码,但是在第一个时期,验证准确性跃升至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%的预测正确。我的代码有什么问题?
答案 0 :(得分:0)
每个类中的个案数必须相同。如果一个班级比其他班级有更多案子,它将主导培训。在您的训练数据集中,列出所有课程以及每个课程有多少条记录。如果有任何不平衡,您可以尝试通过添加/减去数据或组合类来使它们不平衡。