我正在为家庭作业编写一段代码,这应该允许我计算关于两个列表的各种距离统计。但是,当我将列表分配给类,并尝试打印其中一个函数的结果时,我收到错误,
NameError: name 'ratings1' is not defined
让我相信我在__init__
函数或函数中的引用中做错了。你能帮我澄清一下我做错了吗?
class similarity:
def __init__(self, ratingX, ratingY):
self.ratings1=ratingX
self.ratings2=ratingY
def minkowski(self,r):
self.r=r
mink=0
length=len(ratings1)
for i in range(0,length):
mink=mink+(abs(ratings1[i]-ratings2[i]))**r
mink=mink**(1/r)
result='Given r=%d, Minkowski distance=%f'%(r,mink)
return result
def pearson(self):
Xavg=average(ratings1)
Yavg=average(ratings2)
n=len(ratings1)
diffX=[]
diffY=[]
for i in range(0,n):
diffX.append(ratings1[i]-Xavg)
diffY.append(ratings2[i]-Yavg)
return diffX
diffXY=[]
for i in range(0,n):
diffXY.append(diffX[i]*diffY[i])
example2=similarity([1,3,5,5,6],[4,6,10,12,13])
print(example2.pearson())
注意:如果我在函数中将对“ratings/2”的引用更改为“ratingsX / Y”,则此错误仍然存在。
答案 0 :(得分:0)
您需要在每次引用实例变量之前使用self
,即self.ratings1
,并且您的缩进也是错误的。
答案 1 :(得分:0)
评级与课程相关。使用top bottom
等等..
答案 2 :(得分:0)
我只知道我的错误。对于每个函数,我都未能在self.
名称之前使用ratings
短语。为了修改这个,我添加了
ratings1=self.
ratings2=self.ratings2
到每个功能的开头。问题解决了。