自定义评分指标sklearn逻辑回归

3
假设我有以下自定义损失函数,我正在使用sci-kit learn。在这种情况下,我仅对模型得分高于0.8的观察结果进行评分。
def customLoss(y_true, y_pred):
    a = pd.DataFrame({'Actuals':y_true, 'Preds': y_pred})
    a = a.query('Preds > 0.8')
    return(precision_score(a['Actuals'], a['Preds']))

param_grid = {'C': [0.001, 0.01, 0.1, 1, 10]}
scorer = make_scorer(mf.customLoss ,greater_is_better = True)
grid = GridSearchCV(LogisticRegression(class_weight = 'balanced'), param_grid = param_grid, scoring = scorer, cv = 5)

不过,假设我想要将阈值(0.8)设置为可配置项。显然,我需要像这样在我的损失函数中添加第三个参数:

def customLoss(y_true, y_pred, threshold):
        a = pd.DataFrame({'Actuals':y_true, 'Preds': y_pred})
        a = a.query('Preds > @threshold')
        return(precision_score(a['Actuals'], a['Preds']))

然而,我有点困惑第三个参数应该放在 make_scorer 函数的哪里?

请将您的问题精炼为一个单一的问题,以使其更加清晰明了。 - sentence
修改了我的问题! - ben890
1个回答

0

尝试

grid = GridSearchCV(LogisticRegression(class_weight = 'balanced'), param_grid = param_grid, scoring = 'metric_you_want', cv = 5)

我想我也不确定这样一个函数会是什么样子。 - ben890
您应该能够将可调用对象传递给评分参数。https://scikit-learn.org/stable/modules/model_evaluation.html#scoring - Pasindu Gamarachchi
语法看起来怎么样? - ben890
在文档中找不到第三个参数的放置位置。 - ben890
Pasindu,你有什么想法吗? - ben890
我会尝试使用make_scorer函数。 https://scikit-learn.org/stable/modules/generated/sklearn.metrics.make_scorer.html#sklearn.metrics.make_scorer - Pasindu Gamarachchi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接