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

基于CatBoost实现主/次偏好双早餐类型预测的可行性咨询

用CatBoost搞定早餐类型的Top2偏好预测

完全可以在现有方案基础上实现,不用改训练逻辑,靠CatBoost的概率输出就能直接拿到最偏好和第二偏好的早餐类型,具体操作如下:

关键逻辑

CatBoost分类器训练完成后,不仅能输出单个预测类别,还能输出每个样本对应所有早餐类型的预测概率。我们只需要对这些概率从高到低排序,取前两个对应的类别,就是你要的Top2偏好。

代码修改示例

你的训练代码完全不用动,只需要在预测阶段替换成以下代码:

# 原有训练部分保持不变
df_train, df_test = train_test_split(df, test_size=0.15, random_state=42)
df_train, df_valid = train_test_split(df_train, test_size=0.15, random_state=42)

features_train = df_train.drop(['breakfast'], axis=1)
target_train = df_train['breakfast']
features_valid = df_valid.drop(['breakfast'], axis=1)
target_valid = df_valid['breakfast']
features_test = df_test.drop(['breakfast'], axis=1)
target_test = df_test['breakfast']

model_cat = CatBoostClassifier(random_state=42)
model_cat.fit(features_train, target_train)

# 替换predict为predict_proba,获取所有类别的概率
valid_probabilities = model_cat.predict_proba(features_valid)

# 获取所有早餐类型的标签列表
breakfast_types = model_cat.classes_

# 对每个样本的概率降序排序,取前2个的索引
import numpy as np
top2_indices = np.argsort(-valid_probabilities, axis=1)[:, :2]

# 把索引转成对应的早餐类型名称
valid_top2_predictions = breakfast_types[top2_indices]

# 打印前5个样本的Top2结果,格式是[最偏好, 第二偏好]
print(valid_top2_predictions[:5])

额外说明

  • predict_proba()返回的是二维数组,每行对应一个样本,每列对应一种早餐类型的概率,顺序和model_cat.classes_里的类型顺序完全一致。
  • 如果要评估Top2预测准不准,可以自己写个小逻辑:比如统计真实早餐类型在Top2结果里的样本占比,这个就是常用的Top2准确率指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:20:08