在Python sklearn中相当于Matlab的PCA

时间:2019-04-04 13:55:51

标签: python matlab scikit-learn

我是Matlab用户,正在通过sklearn库学习Python。我想翻译这个Matlab代码

[coeff,score] = pca(X)

对于coeff,我已经在Python中尝试过:

from sklearn.decomposition import PCA
import numpy as np
pca = PCA()
pca.fit(X)
coeff = print(np.transpose(pca.components_))

我不知道这是对的吗?对于score,我一无所知。

有人能启迪coeff的正确性和score的可行性吗?

2 个答案:

答案 0 :(得分:2)

sklearn PCA具有score方法,如文档中所述:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

尝试:pca.score(X)pca.score_samples(X),具体取决于您希望获得每个样本的分数(后者)还是所有样本的单个分数(前者)

答案 1 :(得分:0)

sklearn中的PCA得分与matlab不同。

在sklearn中,pca.score()pca.score_samples()给出了样本的对数似然,而matlab给出了主要成分。

来自sklearn Documentation

  

返回每个样本的对数似然性。

     

参数:
   X:数组,形状(n_samples,n_features)         数据
  返回:
   ll:阵列,形状(n_samples个)         当前模型下每个样本的对数似然

来自matlab documentation

  

[coeff,score,latent] = pca(___)也返回主成分   分数得分和潜在主成分方差。您   可以使用先前语法中的任何输入参数。

     

主成分得分是X在中的表示形式   主要组件空间。分数行对应于观察值,   和列对应于组件。

     

主成分方差是   X的协方差矩阵。

现在,pca中的matlab score等效为fit_transform()transform()

>>> import numpy as np
>>> from sklearn.decomposition import PCA
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> pca = PCA(n_components=2)
>>> matlab_equi_score = pca.fit_transform(X)