You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CatBoostClassifier多分类中获取和为1的依赖型概率的问题求助

解决CatBoost OneVsAll模式下概率总和不为1的问题
  • 原因:当你用loss_function: 'MultiClassOneVsAll'训练模型时,get_proba返回的是每个类别单独做二分类(One-vs-Rest)得到的概率,这些概率是相互独立的二分类结果,所以总和自然不会等于1。
  • 解决方法:对每个样本的概率列表做归一化处理——把每个概率值除以该样本所有概率的总和,处理后所有类别的概率加起来就等于1了。

给你个Python代码示例:

import pandas as pd
import numpy as np

# 假设probs是get_proba返回的概率数组,形状为(样本数, 类别数)
probs = model.get_proba(X_test)
# 执行归一化,得到总和为1的依赖型概率
normalized_probs = probs / probs.sum(axis=1, keepdims=True)

# 转成DataFrame并导出到Excel
df = pd.DataFrame(normalized_probs, columns=[f"class_{i}" for i in range(probs.shape[1])])
df.to_excel("normalized_probs.xlsx", index=False)
  • 额外提示:如果不想手动处理,也可以直接把损失函数改成'MultiClass'(CatBoost默认的多分类模式),这种模式下get_proba会直接返回归一化后的联合概率,不用再做额外操作。

内容的提问来源于stack exchange,提问作者Master_Sniffer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:45:48