scikit-learn的MDS正确输入是什么?

4 投票
1 回答
5532 浏览
提问于 2025-04-18 16:27

我希望这里是发帖的正确地方,如果不是,我可以换到Stack Overflow。

无论如何,我正在使用MDS(多维尺度分析)来帮助我找到一个数据集的二维表示。简单来说,这些数据是关于氨基酸残基的pKa值,这些值是多年蛋白质数据的结果——本质上是同一范围内的小数。数据中有很多位置(大约600行),还有很多年份(大约12列)。

我的问题是:输入MDS的正确数据是数据矩阵(年份对位置),还是可以用相关矩阵(年份对年份)?我之所以问这个,是因为API文档和书面描述之间有冲突。

API文档说要用数据矩阵:http://scikit-learn.org/stable/modules/generated/sklearn.manifold.MDS.html#sklearn.manifold.MDS(也就是说,样本数,特征数)。

而书面描述则说“输入相似性矩阵”:http://scikit-learn.org/stable/modules/manifold.html

1 个回答

10

如果你在最开始的估算器中传入 dissimilarity='euclidean'(或者默认就是这样),它会接收一个数据矩阵,然后为你计算出欧几里得距离矩阵。

如果你传入 dissimilarity='precomputed',那么它会直接使用一个不相似度矩阵。

不过,文档上对此确实不是很清楚;我相信如果有人提交一个请求,简单说明一下 X 参数的描述,并且澄清 'euclidean' 是默认选项(我也是查了源代码才知道的),肯定会被接受。

撰写回答