首页 > 解决方案 > Python cosine_similarity 不适用于具有 NaN 的矩阵

问题描述

需要找到像这个R func一样工作的python函数:

proxy::simil(method = "cosine", by_rows = FALSE) 

即通过成对计算数据帧行之间的余弦距离来找到相似度矩阵。如果存在 NaN,它应该删除这 2 行中带有 NaN 的确切列

相似函数描述 (R)

由于 NaN 导致的 Python 错误

更新。我还尝试使用来自 scipy.spatial.distance的余弦函数在循环中的每一对行中删除NaN 。它给出了与 R 中相同的结果,但适用于年龄:(

标签: pythonrscikit-learnsimilaritycosine-similarity

解决方案


您可以尝试这种方法: https://github.com/Midnighter/nadist,或者您可以使用这里的 metaperture https://github.com/scipy/scipy/issues/3870_chk_weights所描述的with ,希望对您有所帮助。nan_screen=True

我发现 Midnighter 之前在 stackoverflow 上发布过同样的问题:Compute the pairwise distance in scipy with missing values。那里还有一些其他的解决方案,但是,当他继续进行 cytonize 时,我敢打赌它们不是最好的。


推荐阅读