你的代码有几处问题:
1. 在定义列表 `ls_xl` 和 `ls_cos` 时没有初始化为空列表:2. 在计算余弦相似度的公式中,应该使用浮点数除法 `/` 而不是整数除法 `//`:cos = zi / ((mu1**0.5) * (mu2**0.5))
3. 在计算两个向量之间的余弦相似度时,需要传入正确的参数,而不是传入相同的向量:begin1 = myfunc(tuple(ls_xl[m1]), tuple(ls_xl[n1]))begin2 = myfunc(ls_xl[m2], ls_xl[n2])
4. 在找出相似度最小的两个向量时,应该使用 `<=` 来判断相等,而不是 `==`:根据上述修正,以下是修改后的代码:ls_xl = []ls_cos = []N = 0while True: xl = input("请输入一个D维向量:(重复至输入n后停止输入)") if xl == "n": break else: ls_xl.append(xl) N += 1D = len(ls_xl[0])def myfunc(a, b): mu1, mu2, zi, cos = 0, 0, 0, 0 for i in range(D): zi += float(a[i]) * float(b[i]) mu1 += (float(a[i]) ** 2) mu2 += (float(b[i]) ** 2) cos = zi / ((mu1**0.5) * (mu2**0.5)) return coscos_min = float('inf')for m1 in range(N): for n1 in range(m1+1, N): begin1 = myfunc(ls_xl[m1], ls_xl[n1]) ls_cos.append(begin1) if begin1 < cos_min: cos_min = begin1for m2 in range(N): for n2 in range(m2+1, N): begin2 = myfunc(ls_xl[m2], ls_xl[n2]) if begin2 <= cos_min: print(ls_xl[m2], ls_xl[n2])
希望以上修改可以帮助你发现并修正代码中的问题。请注意,我在代码中添加了一些细微的修改,以确保输出结果正确。请自行运行代码并检查是否没有错误。编程过程中,细节很重要,所以仔细检查非常重要。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |