我知道我可以实现这样一个均方根误差函数:
def rmse(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())
如果这个rmse函数是在某个库中实现的,可能是在scipy或scikit-learn中,我在寻找什么?
我知道我可以实现这样一个均方根误差函数:
def rmse(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())
如果这个rmse函数是在某个库中实现的,可能是在scipy或scikit-learn中,我在寻找什么?
当前回答
你可能想加上绝对值np。如果你在处理复数。
import numpy as np
rms = np.sqrt(np.mean(np.abs(x-y)**2))
注意,如果使用np. linalgg .norm,它已经处理了复数。
import numpy as np
rms = np.linalg.norm(x-y)/np.sqrt(len(x))
其他回答
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 >= 0.22.0
sklearn。metrics有一个带有平方kwarg的mean_squared_error函数(默认为True)。将平方设置为False将返回RMSE。
from sklearn.metrics import mean_squared_error
rms = mean_squared_error(y_actual, y_predicted, squared=False)
Sklearn < 0.22.0
sklearn。Metrics有一个mean_squared_error函数。RMSE就是它返回值的平方根。
from sklearn.metrics import mean_squared_error
from math import sqrt
rms = sqrt(mean_squared_error(y_actual, y_predicted))
不,有一个用于机器学习的Scikit Learn库,可以通过使用Python语言轻松地使用它。它有一个函数的均方误差,我分享下面的链接:
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html
函数名为mean_squared_error,如下所示,其中y_true将是数据元组的真实类值,y_pred将是预测值,由您使用的机器学习算法预测:
mean_squared_error (y_true y_pred)
您必须修改它以获得RMSE(通过使用Python使用sqrt函数)。这个过程在这个链接中描述: https://www.codeastar.com/regression-model-rmsd/
所以,最终代码是这样的:
从sklearn。度量导入mean_squared_error 从数学导入根号rt
RMSD = sqrt(mean_squared_error(testing_y, prediction))
打印(RMSD)
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)
这个可能更快?:
n = len(predictions)
rmse = np.linalg.norm(predictions - targets) / np.sqrt(n)