我一直在使用自定义损失函数作为评分方法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_pred
y_pred[:,1]
custom_loss
y_true
谢谢!