如何区分model.predict() 和 model.predict_proba()?

最近在做关于机器学习和深度学习实验的时候,直接将机器学习模型套了深度学习中,但出现了报错,下面我们来解释一下。

机器学习中:

def model_performance(model,X_train,y_train,X_test,y_test):
    model.fit(X_train, y_train)
    predicted = model.predict(X_test) # [0 0 0 ... 0 0 0]
    print("*****",predicted)
    predicted_prob = model.predict_proba(X_test) # 输出类别概率 5维度
    print(predicted_prob)
***** [0 0 0 ... 0 0 0]
[[0.0685155  0.22937195 0.39369586 0.20875027 0.09966642]
 [0.06768499 0.18204635 0.46509778 0.19814811 0.08702277]
 [0.06794315 0.19585645 0.42916814 0.20967341 0.09735886]
 ...
 [0.05866877 0.13941506 0.37418567 0.24062653 0.18710397]
 [0.05755057 0.16208819 0.4660596  0.21127041 0.10303124]
 [0.04571597 0.12904605 0.40106484 0.24679342 0.17737972]]

上面是他们输出的结果 我们可以看出 model.predict 输出的是一个标签值,而第二个输出的是概率。

在机器学习中

  • 通常,机器学习中的模型输出是类别标签。例如,在二分类问题中,model.predict 可能返回类别标签 0 或 1。在多分类问题中,可能返回多个类别标签中的一个。
  • model.predict_proba 一般用于获取概率信息,返回每个类别的概率值。这在需要概率信息的场景中很有用,比如绘制 ROC 曲线、计算 AUC 等。

深度学习中:(model 中我们定义了一个MLP(多层感知机模型))

def model_performance_DL(model,X_train,y_train,X_test,y_test):
    # model 已经在上面模型中fit了
    # y_pred = model.predict_proba(X_test)  #  [[0.11328121 0.15560272 0.41047114 0.21880718 0.10183779]...] 生成概率矩阵
    y_pred = model.predict(X_test)  #  [[0.11328121 0.15560272 0.41047114 0.21880718 0.10183779]...] 生成概率矩阵
    print(y_pred)
    predicted = []   # [2, 2, 2, 2, 2, 2,...]
    predicted_prob = y_pred
    for i in range(len(y_pred)):
        predicted.append(np.argmax(y_pred[i]))
    print(predicted)
[[0.0914833  0.16449034 0.36516902 0.21704283 0.1618145 ]
 [0.06984996 0.15207583 0.40046582 0.22811058 0.14949782]
 [0.06896283 0.15217893 0.4018344  0.22758484 0.14943895]
 ...
 [0.08319778 0.16089137 0.37650803 0.22180358 0.15759929]
 [0.06792274 0.15025833 0.40528333 0.22829781 0.14823778]
 [0.07095329 0.15256266 0.3989566  0.22734448 0.15018293]]


[[0.0914833  0.16449034 0.36516902 0.21704283 0.1618145 ]
 [0.06984996 0.15207583 0.40046582 0.22811058 0.14949782]
 [0.06896283 0.15217893 0.4018344  0.22758484 0.14943895]
 ...
 [0.08319778 0.16089137 0.37650803 0.22180358 0.15759929]
 [0.06792274 0.15025833 0.40528333 0.22829781 0.14823778]
 [0.07095329 0.15256266 0.3989566  0.22734448 0.15018293]]


[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,

我们可以看出来 两者输出的结果一样 那说明他们在深度学习中往往直接输出多类别的概率

在深度学习中

  • 在深度学习中,model.predict 也可能输出类别标签,但更常见的是输出概率分布。即使是在分类任务中,深度学习模型一般会输出每个类别的概率分布
  • model.predict_proba 在深度学习中可能被更直观地表示为 model.predict,因为深度学习模型常常直接输出类别概率,而不是硬性的类别标签。

总体而言,深度学习模型在输出时更倾向于提供类别的概率分布,这使得 model.predict 在深度学习中更类似于 model.predict_proba。在实际应用中,具体的输出形式取决于你的任务和模型的架构。

如果能够帮助你的话 可以给个赞赞奖励一下 谢谢!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XF鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值