Keras model.predict输出的概率值转换为类别

问题:使用Keras做分类任务,model.predict预测得到的值为每个类别的概率值,而不是类别。
源码:

y_test_pred = model.predict(x_test, batch_size=256, verbose=1)

解决:

import numpy as np
y_test_pred = model.predict(x_test, batch_size=256, verbose=1)
y_test_pred = np.argmax(y_test_pred, axis=1)

注意:axis值为你要转换的行,而且输出为一维数据,即每个样本对应一个类别值。

总结:
Keras框架能使用的函数是predictpredict_classesSklearn中能使用的函数是predictpredict_proba
predict函数:
1.训练后返回一个概率值数组,此数组的大小为n·k,第i行第j列上对应的数值代表模型对此样本属于某类标签的概率值,行和为1。例如预测结果为:[[0.66651809 0.53348191],代表预测样本的标签是0的概率为0.666518091的概率为0.53348191
2.输出预测值很简单,只需要在括号内加入处理好的数据集。

pt = predict(test)

output:
在这里插入图片描述
3.将预测值转换为0/1值,方法有两种,第一种是使用predict_classes直接输出标签值,第二种是用Numpy转换一下,具体操作如下:

print(np.argmax(pt, axis=1))

output:
在这里插入图片描述
注意:
本人在实际操作时发现,使用predict_classes()会出现报错:'Model' object has no attribute 'predict_classes'。这是因为本系统在搭建模型时,先进行了神经网络的编写,之后使用model = Model(input=inp, output=outp)方法,此时这种综合起来的方法无法使用predict_classes(),所以需要配合numpy.argmax()方法将样本最大概率归属类别的值转化为样本的预测数组。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值