我知道我可以实现这样一个均方根误差函数:

def rmse(predictions, targets):
    return np.sqrt(((predictions - targets) ** 2).mean())

如果这个rmse函数是在某个库中实现的,可能是在scipy或scikit-learn中,我在寻找什么?


当前回答

from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_actual, y_predicted, squared=False)

or 

import math
from sklearn.metrics import mean_squared_error
rmse = math.sqrt(mean_squared_error(y_actual, y_predicted))

其他回答

这个可能更快?:

n = len(predictions)
rmse = np.linalg.norm(predictions - targets) / np.sqrt(n)

Kaggle内核中有一个ml_metrics库,无需预安装即可使用,非常轻量级,可以通过pypi访问(使用pip install ml_metrics即可轻松快速安装):

from ml_metrics import rmse
rmse(actual=[0, 1, 2], predicted=[1, 10, 5])
# 5.507570547286102

它有一些其他有趣的指标,这些指标在sklearn中是不可用的,比如mapk。

引用:

https://pypi.org/project/ml_metrics/ https://github.com/benhamner/Metrics/tree/master/Python

是的,它是由SKLearn提供的,我们只需要在参数中提到平方= False

from sklearn.metrics import mean_squared_error

mean_squared_error(y_true, y_pred, squared=False)
from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_actual, y_predicted, squared=False)

or 

import math
from sklearn.metrics import mean_squared_error
rmse = math.sqrt(mean_squared_error(y_actual, y_predicted))

sklearn的mean_squared_error本身包含一个参数平方,默认值为True。如果我们将其设置为False,相同的函数将返回RMSE而不是MSE。

from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred , squared=False)