sklearn.manifold.MDS没有变换方法

时间:2014-02-22 23:44:36

标签: scikit-learn

在我制作MDS对象mds并使其与mds.fit(X)匹配后,我想我可以使用mds.transform(X_new)投射新点。我认为这是其他多种类的API。但只有fit_transform。我想从fit_transform做一些更合适的描述,我不想改变已经计算过的投影!

编辑:等等,也许这没有意义。我做了一些阅读。如果我现在理解正确,MDS算法是一个迭代的算法,“只是移动点”,直到应力值变低 - 并且实际上不允许投影。

但是,我对fit_transform的作用感到有些困惑。文档说“从X拟合数据,并返回嵌入的坐标”。这与仅仅适合和考虑mds.embedding_

有何不同?

2 个答案:

答案 0 :(得分:1)

对于scikit-learn变换器,estimator.fit_transform(X)always equivalentestimator.fit(X).transform(X),但通常更有效地实施。在这种情况下,它确实与estimator.fit(X).embedding_相同;它就在那里,因为像Pipeline这样的scikit-learn类可能会调用它。

对于任何多方学习者来说似乎没有transform方法,可能是错误的;我刚开了一个关于此事的issue

答案 1 :(得分:0)

sklearn MDS,SpectralEnbedding和TSNE不能用于分类的特征约简。它们没有像KernelPCA或LocallyLinearEmbedding这样的独立transform()方法。没有transform()方法,就无法转换和评分新数据。

MDS和TSNE仅用于特征集分析。典型示例用于可视化,但它们在特征分析中的用途不只是可视化。

将PCA用于线性可分离特征集,将非线性转换器(如LLE)用于非线性可分离特征集。