首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫提高了数据精度

熊猫提高了数据精度
EN

Stack Overflow用户
提问于 2021-07-27 05:01:28
回答 1查看 61关注 0票数 0

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

我正在尝试计算对象的余弦相似度,当我运行代码时,它似乎工作得很好,但是当我对距离进行排序时,衣柜对象的距离都是0,只有当它们的向量相同时才有可能,但事实并非如此。

我查看了数据输出,似乎任何精度超过E-16的数字都会变成0(它在终端打印输出和csv文件输出中都显示为0)

这些列是float64格式的。

如何才能显示更高的精确度?

下面是我正在运行的代码以供参考:

代码语言:javascript
复制
import pandas as pd
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform

dfe = pd.read_csv('file.csv')

dfe = dfe.set_index('object')

dfe = dfe.fillna(dfe.mean())

pairwise = pd.DataFrame(squareform(pdist(dfe, metric='cosine')),columns = dfe.index,index = dfe.index)

long_form = pairwise.unstack()

long_form.index.rename(['object_1', 'object_2'], inplace=True)
long_form = long_form.to_frame('distance').reset_index()
EN

回答 1

Stack Overflow用户

发布于 2021-07-28 07:43:43

如果您的意思是,当您尝试获取两个元素之间的差值时得到0,而当元素差值小于1e-16时得到0,这就是float64精度限制。有关示例print(1+1e-16),请参阅。有关这方面的信息可以通过numpy.finfo(numpy.float)获得。

您应该尝试使用更高精度的数据类型。例如:

代码语言:javascript
复制
dfe =  pd.read_csv('file.csv').astype(numpy.float128)

如果squareform的结果仍然是float64 dtype,那么您应该将您的scipy库update到更高的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68536283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档