首页 > 解决方案 > 将 scikit-learn 中 MDS 的共现矩阵转换为相异矩阵

问题描述

我有一个单词共现矩阵,如下所示。我想使用 MDS 来减少尺寸并绘制它。在 sklearn 中有一个函数model = MDS(n_components=2, dissimilarity='precomputed', random_state=1)并应用模型output = model.fit_transform(input)我的理解是输入应该是一个相异矩阵,而不是我所拥有的相似矩阵。那是对的吗?有没有可以用来转换这个共现相异矩阵的函数?我对此很陌生。非常感谢您的帮助。

co-occurrence matrix :
        word1       word2      word3 ...
word1.    0           1          3
word2     1           0          5
word3     3           5          1
...

标签: pythonmachine-learningscikit-learnmdsmulti-dimensional-scaling

解决方案


可能为时已晚,但我可能有一个答案要提议。

我使用了一个相似度矩阵(对角线上全是 1,这不是你的情况),并找到了一个简单的公式将其转换为相异矩阵:(1 - 单元格)但是,我的主管找到了另一个公式(我不能找到参考),它似乎管理具有不同值的对角线。我在这个线程中添加了一些细节,但是我的 AWK 程序不能应用于您的数据(因为我简化了公式来管理我的情况,我的对角线中只有 1 个)。

可以为您工作的公式是:

(sii + si'i' - 2 * sii')^1/2

就我而言,对角线为 1,我将其简化为:

(2 - 2 * sii')^1/2

我希望它可以帮助你!:) 但也许我错了。如果是这样的话,我很想知道细节。


推荐阅读