Python 为什么我的CatBoost fit指标与sklearn评估指标不同?

Python 为什么我的CatBoost fit指标与sklearn评估指标不同?,python,machine-learning,classification,catboost,Python,Machine Learning,Classification,Catboost,我仍然不确定这是否应该是本论坛或交叉验证的问题,但我将尝试这个问题,因为它更多地是关于代码的输出,而不是技术本身。事情是这样的,我正在运行一个CatBoost分类器,就像这样: # import libraries import pandas as pd from catboost import CatBoostClassifier from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_scor

我仍然不确定这是否应该是本论坛或交叉验证的问题,但我将尝试这个问题,因为它更多地是关于代码的输出,而不是技术本身。事情是这样的,我正在运行一个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_分数显示的AUC为0.73,即更低。据我所知,CatBoost的AUC已经出现在测试数据集上


有什么想法是这里的问题所在?我该如何解决它?

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

y_pred=模型预测概率检验[:,1]
请参阅和。

效果很好,非常感谢!