2016-08-21 103 views
1

我正在尝试使用函数来计算不使用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 

能否请你纠正我,我在做错误的计算和谁可以解决吗?

+1

'i + = 1'对我来说看起来不对,因为您已经有'i'的迭代器。 – Divakar

+1

你也在循环中返回,所以你只执行一次迭代并返回。你总是会在每次迭代中替换'mse'的值。另外,我不知道你用这个'i'来做什么。你将它初始化为0,然后递增它,但是你在'for'循环中使用'i'作为你的迭代器。仔细修改你的代码。 – idjaw

回答

5

您正在无故修改索引。无论如何,for循环都会增加它。另外,您没有使用索引,例如,您没有使用任何y[i] - y_pred[i],因此您根本不需要该循环。

使用阵列

mse = np.mean((y - y_pred)**2) 
0

首先,您使用的是我反复递增,但在范围是自动迭代到下一个号码。所以不要再使用我。另一件事,你正在采取y的意思,而不是采取这种意思,取平均值((y - y_pred)** 2)。我希望,你明白了。