为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕娘9325324 2022-08-02 10:38:17
我用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_1prediction = 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
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

请改用。否则,您将获得概率。model.predict_classes()


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

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而不是概率。


查看完整回答
反对 回复 2022-08-02
  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信