我正在寻找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:
...
答案 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
条件的功能即可完成工作。
希望这会有所帮助!