在 scikit-learn 中按名称获取评分函数

Tom*_*ett 2 scikit-learn

scikit-learn,有评分函数的概念。如果我们有一些预测标签和真实标签,我们可以通过调用 来获得分数scoring(y_true, y_predict)。这种评分函数的一个例子是sklearn.metrics.accuracy_score

评分函数不应与 混淆scorer,后者是一个可以称为 的对象scorer(estimator, X, y_true)

中有许多内置的评分器scikit-learn。可以通过字符串名称找到这些记分员。例如,我们可以通过调用sklearn.metrics.get_scorer("accuracy")/

但事实证明,没有明显的机制可以在运行时通过名称访问内置评分函数,通过将名称作为 string 传递。例如,无法sklearn.metrics.accuracy_score通过 name访问accuracy

例如,如果在运行时,程序知道变量中包含评分函数的名称name,我正在寻找一种机制get_scoring_function(),这样,get_scoring_function(name)将返回评分函数句柄。请注意,此名称name在编写脚本时未知。

有没有办法通过将名称作为字符串传入,在运行时通过名称访问内置评分函数

小智 5

您可以使用该get_scorer()函数,该函数接受一个字符串作为参数,然后获取_score_func返回对象的属性。

所以例如

from sklearn.metrics import get_scorer

get_scorer('accuracy')._score_func(y_true, y_pred) 
Run Code Online (Sandbox Code Playgroud)

相当于

from sklearn.metrics import accuracy_score

accuracy_score(y_true, y_pred)
Run Code Online (Sandbox Code Playgroud)