我正在尝试使用函数来计算不使用sklearn或其他实现的y(真实值)和y_pred(预测的)的均方误差。Python中的均方误差
接下来,我将尝试:
def mserror(y, y_pred):
i=0
for i in range (len(y)):
i+=1
mse = ((y - y_pred) ** 2).mean(y)
return mse
能否请你纠正我,我在做错误的计算和谁可以解决吗?
我正在尝试使用函数来计算不使用sklearn或其他实现的y(真实值)和y_pred(预测的)的均方误差。Python中的均方误差
接下来,我将尝试:
def mserror(y, y_pred):
i=0
for i in range (len(y)):
i+=1
mse = ((y - y_pred) ** 2).mean(y)
return mse
能否请你纠正我,我在做错误的计算和谁可以解决吗?
您正在无故修改索引。无论如何,for循环都会增加它。另外,您没有使用索引,例如,您没有使用任何y[i] - y_pred[i]
,因此您根本不需要该循环。
使用阵列
mse = np.mean((y - y_pred)**2)
首先,您使用的是我反复递增,但在范围是自动迭代到下一个号码。所以不要再使用我。另一件事,你正在采取y的意思,而不是采取这种意思,取平均值((y - y_pred)** 2)。我希望,你明白了。
'i + = 1'对我来说看起来不对,因为您已经有'i'的迭代器。 – Divakar
你也在循环中返回,所以你只执行一次迭代并返回。你总是会在每次迭代中替换'mse'的值。另外,我不知道你用这个'i'来做什么。你将它初始化为0,然后递增它,但是你在'for'循环中使用'i'作为你的迭代器。仔细修改你的代码。 – idjaw