【问题标题】:What is the correct input to scikit-learn's MDS?scikit-learn 的 MDS 的正确输入是什么?
【发布时间】:2014-10-01 06:14:42
【问题描述】:

我希望这是发帖的正确位置 - 如果不是,我愿意更改为 SO。

无论如何,我都在使用 MDS 来帮助我找到数据集的二维表示。从本质上讲,这些是多年蛋白质数据中氨基酸残基的 pKa 值——其核心是相同比例的十进制数。有很多职位(~600 行),有很多年(~12 列)。

我的问题是:MDS 的正确输入是数据矩阵(年与职位),还是我可以放入相关矩阵(年与年)?我问是因为 API 文档与书面描述有冲突。

API 文档说数据矩阵:http://scikit-learn.org/stable/modules/generated/sklearn.manifold.MDS.html#sklearn.manifold.MDS(即 n_samples、n_features)。

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

【问题讨论】:

    标签: python scikit-learn multi-dimensional-scaling


    【解决方案1】:

    如果您将dissimilarity='euclidean' 传递给初始估计器(或默认情况下),它将获取一个数据矩阵并为您计算欧几里得距离矩阵。

    如果你通过dissimilarity='precomputed',它需要一个相异矩阵。

    不过,文档对此确实不是很清楚;我确信一个拉取请求会在X 参数的描述中添加一个简短的注释,并澄清'euclidean' 是默认值(我必须检查源),将被接受。

    【讨论】:

    • 非常感谢,@Dougal!我还需要再等6分钟。接受你的回答。 :-)
    • 欧几里得距离矩阵中的条目(i,j)应该是什么?从数据矩阵(例如,7行3列)计算?
    • @Sigur 如果你有一个形状为(7, 3) 的数据矩阵,这意味着在 scikit-learn 中你有 7 个输入点,具有 3 维特征。如果您使用dissimilarity='precomputed'dissim[i, j] 应该是ith 和jth 输入点之间的差异,例如np.linalg.norm(X[i] - X[j])。请注意,sklearn.metrics.pairwise.euclidean_distances 将为您计算欧几里得距离。
    • 因此,数据被读取为每一行的点,维度来自列数!所以,如果我换位,情况就完全不同了。非常感谢。
    • @Sigur 是的,这是 scikit-learn 中的标准:参见例如this section of the tutorial 中的“数据数组的形状”。
    猜你喜欢
    • 2021-03-31
    • 2018-09-24
    • 2021-05-29
    • 2017-02-25
    • 2021-09-14
    • 2016-11-22
    • 2014-11-12
    • 2018-06-05
    • 2020-07-01
    相关资源
    最近更新 更多