使用余弦相似度评估模型时遇TypeError错误求助
余弦相似度计算报错解决方案
问题原因
你代码里的norm是scipy.stats.norm(正态分布生成工具),不是计算向量范数的函数。调用它会返回rv_continuous_frozen类型的分布对象,这类对象无法执行乘法运算,所以触发TypeError。
解决方法
改用专门计算向量范数的函数,有两种常用选择:
方案1:使用NumPy的范数函数
导入numpy.linalg.norm,这是计算向量L2范数(余弦相似度默认使用的范数)的标准工具:
import numpy as np from numpy.linalg import norm # 示例向量 v1 = [1.2, 3.4, 5.6] v2 = [7.8, 9.0, 2.1] # 正确计算余弦相似度 cosine_similarity = np.dot(np.array(v1), np.array(v2)) / (norm(np.array(v1)) * norm(np.array(v2))) print(cosine_similarity)
方案2:使用SciPy的范数函数
如果项目依赖SciPy,也可以用scipy.linalg.norm,注意不要和scipy.stats.norm混淆:
import numpy as np from scipy.linalg import norm v1 = [1.2, 3.4, 5.6] v2 = [7.8, 9.0, 2.1] cosine_similarity = np.dot(np.array(v1), np.array(v2)) / (norm(np.array(v1)) * norm(np.array(v2))) print(cosine_similarity)
关键提醒
检查你的导入语句,确保没有错误导入from scipy.stats import norm——这个模块是用来生成正态分布样本、计算分布概率的,和向量范数完全无关。
内容的提问来源于stack exchange,提问作者Siva Muthi
相关产品推荐
相关产品推荐

