我正在寻找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:
   ...

最佳答案

您可以使用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条件的功能即可完成工作。

希望这可以帮助!

关于python - sklearn中以度量为参数的回归分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58000579/

10-12 23:17