本文主要是介绍如何区分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_predfor 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
。在实际应用中,具体的输出形式取决于你的任务和模型的架构。
如果能够帮助你的话 可以给个赞赞奖励一下 谢谢!
这篇关于如何区分model.predict() 和 model.predict_proba()?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!