CNN模型Keras中分类预测结果的巨大差异

我用Keras训练了一个模型,每个行都是一个带有特征的样本。然后,我使用预训练模型进行预测。CNNdf921 rows x 10165 columns10160


我确保训练数据是平衡的,大约50%的样本带有标签,其余50%的样本带有标签。模型准确性看起来不错,但在预测过程中存在问题。01


因此,输入数据如下所示:


X = df.iloc[:,0:10160]  

X = X.to_numpy()                      

X = X.reshape([X.shape[0], X.shape[1],1]) 

X_train_1 = X[:,0:10080,:]

X_train_2 = X[:,10080:10160,:].reshape(921,80)      

Y = df.iloc[:,10163:10165]

Y = Y.to_numpy()

我用代码预测了带有预测标签“1”(for)的样本数量:label_1


prediction = pd.DataFrame(model.predict([X_train_1,X_train_2])) 

prediction['label_1'] = ['0' if x < 0.5 else '1' for x in prediction['prob']]


prediction[prediction['label_1'] == '1'].shape[0]/921

第二行代码计算所有样本中样本的比例。问题是,鉴于输入数据具有平衡的数量和,我期望分数约为50%左右,但计算出的分数介于范围〜(如果不是更极端)之间,差异巨大。可能出了什么问题?label_1 ==1100.080.98


慕娘9325324
浏览 152回答 1
1回答

拉风的咖菲猫

请改用。否则,您将获得概率。model.predict_classes()prediction = pd.DataFrame(model.predict_classes([X_train_1,X_train_2]))&nbsp;prediction[prediction['label_1'] == '1'].shape[0]/921如果您使用的是功能性 API,请使用:np.argmax()np.argmax(model.predict([X_train_1,X_train_2]), axis=1)然后,您将需要预测所需的预测,如0和1而不是概率。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python