我是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
的可行性吗?
答案 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给出了主要成分。
返回每个样本的对数似然性。
参数:
X:数组,形状(n_samples,n_features) 数据
返回:
ll:阵列,形状(n_samples个) 当前模型下每个样本的对数似然
[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)