问题描述
我正在尝试计算对象的余弦相似度,当我运行代码时它似乎工作得很好,但是当我对距离进行排序时,壁橱对象的距离都为 0,这只有在以下情况下才有可能它们的向量是相同的,但事实并非如此。
我查看了数据输出,似乎任何精度超过 E-16 的数字都会变为 0(它在终端打印输出和 csv 文件输出中都显示为 0)
列是 float64 格式。
如何显示更高的精度?
这里是我正在运行的代码供参考:
userrole
解决方法
如果您的意思是当您尝试获取两个元素之间的差异时获得 floor
,而当元素差异小于 0
时获得 0,那么这就是 float64 精度限制。参见示例 1e-16
。可使用 print(1+1e-16)
获取有关此信息。
您应该尝试使用更高精度的数据类型。 例如:
numpy.finfo(numpy.float)
如果 dfe = pd.read_csv('file.csv').astype(numpy.float128)
的结果仍然是 squareform
dtype,您应该将您的 scipy 库update 更新到更高版本。