Python cosine_similarity 不适用于包含 NaN 的矩阵
Python cosine_similarity doesn't work for matrix with NaNs
需要找到像这样工作的 python 函数 R func:
proxy::simil(method = "cosine", by_rows = FALSE)
即通过成对计算数据帧行之间的余弦距离来找到相似性矩阵。
如果存在 NaN,它应该删除这两行中具有 NaN 的确切列
Simil function description (R)
Python error because of NaNs
更新。我还尝试使用 scipy.spatial.distance 中的 cosine 函数删除循环中每对行中的 NaNs。它给出与 R 中相同的结果,但工作年龄:(
您可以将 NaN
与 0
交换,然后尝试计算余弦相似度。
你可以试试这个方法:https://github.com/Midnighter/nadist,
或者,您可以将 _chk_weights
与 nan_screen=True
一起使用,如 metaperture 此处 https://github.com/scipy/scipy/issues/3870 所述,希望对您有所帮助。
我发现 Midnighter 之前在 Whosebug 上发布过同样的问题:Compute the pairwise distance in scipy with missing values。那里还有其他一些解决方案,但是,当他继续将其细胞化时,我敢打赌它们不是最好的。
我通过创建一个掩码(指示缺少哪些值的布尔数组)并计算矩阵的行向量之间的成对余弦距离解决了这个问题。结果我收到了一个很长的相似向量,然后我旋转它得到相似矩阵
需要找到像这样工作的 python 函数 R func:
proxy::simil(method = "cosine", by_rows = FALSE)
即通过成对计算数据帧行之间的余弦距离来找到相似性矩阵。 如果存在 NaN,它应该删除这两行中具有 NaN 的确切列
Simil function description (R)
Python error because of NaNs
更新。我还尝试使用 scipy.spatial.distance 中的 cosine 函数删除循环中每对行中的 NaNs。它给出与 R 中相同的结果,但工作年龄:(
您可以将 NaN
与 0
交换,然后尝试计算余弦相似度。
你可以试试这个方法:https://github.com/Midnighter/nadist,
或者,您可以将 _chk_weights
与 nan_screen=True
一起使用,如 metaperture 此处 https://github.com/scipy/scipy/issues/3870 所述,希望对您有所帮助。
我发现 Midnighter 之前在 Whosebug 上发布过同样的问题:Compute the pairwise distance in scipy with missing values。那里还有其他一些解决方案,但是,当他继续将其细胞化时,我敢打赌它们不是最好的。
我通过创建一个掩码(指示缺少哪些值的布尔数组)并计算矩阵的行向量之间的成对余弦距离解决了这个问题。结果我收到了一个很长的相似向量,然后我旋转它得到相似矩阵