我正在嘗試使用函數來計算不使用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