Python 为什么我的CatBoost fit指标与sklearn评估指标不同?
我仍然不确定这是否应该是本论坛或交叉验证的问题,但我将尝试这个问题,因为它更多地是关于代码的输出,而不是技术本身。事情是这样的,我正在运行一个CatBoost分类器,就像这样: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
# 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]
请参阅和。效果很好,非常感谢!