Pandas 提高数据精度

问题描述

我有一个数据框,其中行代表对象,列代表对象特征。

我正在尝试计算对象的余弦相似度,当我运行代码时它似乎工作得很好,但是当我对距离进行排序时,壁橱对象的距离都为 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 更新到更高版本。