怎么了 ?它告诉我:“ IndexError:列表索引超出范围”

时间:2018-11-08 22:00:13

标签: python

Yi=[1,2,3,4,5,6]

Yi_hat=[1.2,2.1,2.9,4.3,5,6.5]

n=[1,2,3,4,5,6]

z=0

for i in n:
    z+=((Yi[i]-Yi_hat[i])**2)
MSE=1/len(n)*(z)

2 个答案:

答案 0 :(得分:0)

在Python中,索引从0开始。 因此,包含6个元素的list的索引为6,因为for循环获取n [5]。 带有列表:

n=[0,1,2,3,4,5]

应该可以。

Yi = [1, 2, 3, 4, 5, 6]
Yi_hat = [1.2, 2.1, 2.9, 4.3, 5, 6.5]

n = [0, 1, 2, 3, 4, 5]

z = 0
for i in n:
    z += (Yi[i] - Yi_hat[i]) ** 2

MSE= 1. / len(n) * z

注1: 1。,这意味着将1视为浮点数,因此您将在Python中获得所需的浮点数结果。

注释2:

我更愿意使用:

for i in range(len(Yi)):

而不是n。

Yi = [1, 2, 3, 4, 5, 6]
Yi_hat = [1.2, 2.1, 2.9, 4.3, 5, 6.5]

z = 0
for i in range(len(Yi)):
    z += (Yi[i] - Yi_hat[i]) ** 2

MSE= 1. / len(Yi) * z

还有另一种循环方式:

Yis = [1, 2, 3, 4, 5, 6]
Yi_hats = [1.2, 2.1, 2.9, 4.3, 5, 6.5]

z = 0
for Yi, Yi_hat in zip(Yis, Yi_hats):
    z += (Yi - Yi_hat) ** 2

MSE= 1. / len(Yis) * z

答案 1 :(得分:0)

您也可以使用numpy

import numpy as np
(1/float(len(Yi)))*sum(np.square(np.array(Yi) - np.array(Yi_hat)))