gpt4 book ai didi

python - Scikit learn - 输出正确选择的平均概率

转载 作者:行者123 更新时间:2023-12-01 02:21:04 25 4
gpt4 key购买 nike

所以我正在用 Scikit-Learn 搞乱三个结果数据框。我更感兴趣的是预测准确的概率,而不是预测正确的结果。因此我使用predict_proba而不是predict,然后我可以输出每个测试实例a、b或c的所有概率,这是平滑的!

有没有办法像accuracy_score(y_predictions, y_test)一样进行“概率得分”?这样我就可以得到每个正确结果的平均概率?

我可以通过将其复制到 Excel 或类似文件来手动完成此操作,但这需要很多时间..

谢谢!

编辑 - 这是 Predict_proba 输出的内容:

       A    B    C
1 [ 0.6 0.3 0.1]
2 [ 0.4 0.1 0.5]
3 [ 0.4 0.3 0.3]
4 [ 0.3 0.1 0.6]
...

现在,假设实例 1 和 2 的结果是 A,实例 3 的结果是 C,实例 4 的结果是 B,这将使我的模型的“正确结果的平均概率”为 (0.6 + 0.4 + 0.3 + 0.1)/实例数(在本例中为 4),即 0.35 或 35 %。

我在 y_test 中存储了准确的结果(当然),因此我希望能够快速获得测试集中大约 500 个实例的正确结果的平均概率。

最佳答案

假设您在 y_test 中有整数编码标签:

import numpy as np
probas = np.array([[0.6, 0.3, 0.1], [0.4, 0.1, 0.5], [0.4, 0.3, 0.3], [0.3, 0.1, 0.6]])
y_test = np.array([[0], [0], [2], [1]])
print(y_test)

[[0]
[0]
[2]
[1]]

要获得所需的结果,您可以使用真实标签从每一行您感兴趣的probas中选择值,然后取平均值。

y_probas = np.choose(y_test.T, probas.T)
print(y_probas)

[[ 0.6 0.4 0.3 0.1]]

avg_proba = np.mean(y_probas)
print(avg_proba)

0.35

但是,请考虑使用 Log Loss ,这是预测概率的更标准的损失度量:

from sklearn.metrics import log_loss
log_loss(y_test, probas)

1.2334185632400319

关于python - Scikit learn - 输出正确选择的平均概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47943183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com