2016-08-21 195 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)。我希望,你明白了。