0

我一直在使用自定义损失函数作为评分方法GridSearchCV。我的数据集是二进制分类的,我从中预测概率,这就是我设置needs_proba=True.make_scorer

def custom_loss(y_true, y_pred):
    return mean_squared_log_error(y_true, y_pred, squared=False)

model = GridSearchCV(model_pipe, 
                     param_grid=param_grid, 
                     cv=StratifiedKFold(n_splits=5, random_state=73, shuffle=True), 
                     n_jobs=-1, 
                     scoring=make_scorer(custom_loss, greater_is_better=True, needs_proba=True),
                     refit=True,
        )

make_scorer 文档中有以下描述needs_proba

如果为真,对于二进制 y_true,评分函数应该接受一维 y_pred(即,正类的概率,形状 (n_samples,))。

这部分:“分数函数应该接受一维 y_pred”对我来说并不完全清楚。

考虑y_true一维数组 ([1 0 0]) 和y_pred二维概率数组 ([0.9 0.1], [0.2 0.8], [0.3 0.7]) 会自动考虑来自( )make_scorer的正概率来调用函数并比较它们到?y_predy_pred[:,1]custom_lossy_true

谢谢!

4

0 回答 0