Python cosine_similarity不适用于带有NaN的矩阵

时间:2019-01-17 12:36:59

标签: python r scikit-learn similarity cosine-similarity

需要找到 python 函数,其功能类似于 R 函数:

let yourWebView = UIWebView();
let html : String = yourWebView.stringByEvaluatingJavaScript(from: "document.body.innerHTML") ?? "";

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

Simil function description (R)

Python error because of NaNs

更新。我还尝试使用scipy.spatial.distance中的 cosine 函数在循环的每一对行中删除 NaN 。它的结果与R中的结果相同,但工作年龄:(

3 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:https://github.com/Midnighter/nadist, 或者,您也可以将_chk_weightsnan_screen=True结合使用,如metaperture在此处https://github.com/scipy/scipy/issues/3870所述,希望有帮助。

我发现Midnighter先前在stackoverflow上发布了相同的问题:Compute the pairwise distance in scipy with missing values。那里还有其他解决方案,但是当他继续进行细胞化处理时,我敢打赌它们不是最好的。

答案 1 :(得分:1)

我通过创建一个掩码(指示缺少哪些值的布尔数组)并计算矩阵的行向量之间的成对余弦距离来解决了这个问题。结果,我收到了一个很长的相似度向量,然后我将其旋转以获取相似度矩阵

答案 2 :(得分:0)

您可以将NaN0交换,然后尝试计算余弦相似度。