问题描述
我有一个带有两个方法的python类:构造函数和一个返回该类的两个实例之间的余弦距离的方法。但是我遇到了一个我觉得应该比较容易解决的问题,但是我终生无法确定应该怎么解决。
这是构造函数方法:
self.row = row
这些是相关的余弦距离方法的一部分:
vector1 = self.row
for n,i in enumerate(vector1):
vector1[n] = vector1[n] ** 2
vector1 = math.sqrt(sum(vector1))
问题在于,当vector1的元素平方时,self.row的元素也是如此。这会导致程序稍后出现一些问题。但是我不明白为什么self.row的元素也会发生变化,因为我不使用self.row而是使用vector1做任何事情。
如果可以的话,这里是整个方法:
def distance(self,vector):
vecsums = []
vector1 = self.row[1]
vector2 = vector.row[1]
for n,i in enumerate(vector1):
vecsums.append(vector1[n] * vector2[n])
vecsums = sum(vecsums)
for n,i in enumerate(vector1):
vector1[n] = vector1[n] ** 2
vector1 = math.sqrt(sum(vector1))
for n,i in enumerate(vector2):
vector2[n] = vector2[n] ** 2
vector2 = math.sqrt(sum(vector2))
return 1 - (vecsums / (vector1 * vector2))
这是调用distance()的代码段:
distances = []
vector_row = Vector(vectorspace[user_input])
for key in vectorspace:
vector_from_key = Vector(vectorspace[key])
distance = (key,vector_row.distance(vector_from_key))
distances.append(distance)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)