为什么我的 CatBoost 拟合指标与 sklearn 评估指标不同?

我仍然不确定这应该是这个论坛或交叉验证的问题,但我会尝试这个,因为它更多地是关于代码的输出而不是技术本身。事情是这样的,我正在运行一个 CatBoost 分类器,就像这样:

# import libraries
import pandas as pd
from catboost import CatBoostClassifier
from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_score
from sklearn.model_selection import train_test_split    

# import data
train = pd.read_csv("train.csv")

# get features and label
X = train[["Pclass", "Sex", "SibSp", "Parch", "Fare"]]

y = train[["Survived"]]

# split into train and test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# model parameters 
model_cb = CatBoostClassifier(
    cat_features=["Pclass", "Sex"],
    loss_function="Logloss",
    eval_metric="AUC",
    learning_rate=0.1,
    iterations=500,
    od_type = "Iter",
    od_wait = 200
)

# fit model
model_cb.fit(
    X_train,
    y_train,
    plot=True,
    eval_set=(X_test, y_test),
    verbose=50,
)

y_pred = model_cb.predict(X_test)

print(f1_score(y_test, y_pred, average="macro"))

print(roc_auc_score(y_test, y_pred))

我使用的数据框来自泰坦尼克号比赛(链接)。

问题是 model_cb.fit 步骤显示的 AUC 为 0.87,但最后一行,来自 sklearn 的 roc_auc_score 显示的 AUC 为 0.73,即低得多。根据我的理解,CatBoost 的 AUC 应该已经在测试数据集中了。

关于这里的问题以及我该如何解决的任何想法?

本清洁工

ROC 曲线需要预测概率或某种其他类型的置信度度量,而不是硬类预测。使用

y_pred = model_cb.predict_proba(X_test)[:, 1]

参见Scikit-learn : roc_auc_score为什么 roc_curve 只返回 3 个值?.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为Catboost创建自定义评估指标?

如何在 sklearn 的拟合函数中选择要优化的指标?

xgboost Python 中验证集中的评估指标与我在进行预测时得到的指标不同

使用cross_val_predict sklearn计算评估指标

评估指标与 Sklearn 函数的手动计算不匹配

Catboost:无法计算需要绝对值对数的指标

是否可以将精度、召回率、f1_score 等 sklearn 评估指标应用于我的问题?

评估不同模型的多个指标的图表

为什么我的Blueman指标丢失了?

Sklearn指标值与Keras值有很大不同

从sklearn导入指标时ImportError

为什么 sklearn 中的 cross_val_score 会翻转指标的值?

为什么我会选择与我的指标不同的损失函数?

如何在Keras中将Sklearn指标实现为指标?

推荐系统的评估指标

为什么我的 ELB cloudwatch 指标 HealthyHostCount 设置为 900?

为什么我的轮播指标有数字?

sklearn分类指标auc返回ValueError

用于多类分类的sklearn指标

sklearn如何计算precision_score指标?

Sklearn kNN用法与用户定义的指标

Sklearn kNN用法与用户定义的指标(再次)

评估在 Spacy 中训练的 NER 模型的好指标是什么

为什么我的Android设备上的路由表具有两个几乎相等的条目(不同的指标)?

为什么我的自定义流指标在相同输入上运行时总是给出不同的结果?

我什么时候使用评分与指标来评估 ML 性能

Python RF 模型评估指标

机器学习算法评估的指标

不同的计数指标