【发布时间】:2021-07-26 21:01:28
【问题描述】:
我有一个数据框,其中行代表对象,列是对象特征。
我正在尝试计算对象的余弦相似度,当我运行代码时,它似乎工作得很好,但是当我对距离进行排序时,壁橱对象的距离都为 0,这只有在它们的向量是相同的,但事实并非如此。
我查看了数据输出,似乎任何精度超过 E-16 的数字都变为 0(它在终端打印输出和 csv 文件输出中都显示为 0)
这些列是 float64 格式。
如何显示更高的精度?
这里是我正在运行的代码供参考:
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()
【问题讨论】:
-
squareform和pdist是什么? “我,查看了数据输出”是什么意思? -
抱歉现在包含了导入
-
我如何确定为 float_format 设置什么值?
标签: python pandas dataframe scipy