sklearn中以度量为参数的回归分数

时间:2019-09-18 20:51:33

标签: python scikit-learn

我正在寻找sklearn解决方案以获取回归分数,而无需事先了解指标,因此我可以做类似的事情

score = regression_score(y_true, y_pred, metric="mean_squared_error")

现在我正在使用多个if语句和对看起来难看的不同函数的调用,例如

if metric == "mean_squared_error":
   score = sklearn.metrics.mean_squared_error(y_true, y_pred)
if metric == "neg_mean_squared_error:
   ...

1 个答案:

答案 0 :(得分:1)

您可以使用getattr来加载所需的功能。请使用以下修改后的功能:

import sklearn.metrics

def regression_score(y_true, y_pred, metric):
    function = getattr(sklearn.metrics, metric)
    return function(y_true, y_pred)
  

样品输出

import numpy as np
y_true = np.array([2,3,4,1])
y_pred = np.array([1,3,1,2])

regression_score(y_true,y_pred,"mean_absolute_error")
1.25

regression_score(y_true,y_pred,"mean_squared_error")
2.75

因此,基本上,您只有一个没有if条件的功能即可完成工作。

希望这会有所帮助!