Эквивалент PCA Matlab в Python sklearn - PullRequest
2 голосов
/ 04 апреля 2019

Я пользователь Matlab и изучаю Python с библиотекой sklearn. Я хочу перевести этот код 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 ]

2 голосов
/ 04 апреля 2019

PCA sklearn имеет метод score, описанный в документации: https://scikit -learn.org / stable / modules / generate / sklearn.decomposition.PCA.html

Попробуйте: pca.score(X) или pca.score_samples(X) в зависимости от того, хотите ли вы получить оценку для каждого образца (последний) или один балл для всех образцов (первый)

0 голосов
/ 05 апреля 2019

Оценка PCA в sklearn отличается от matlab.

В sklearn pca.score() или pca.score_samples() дает логарифмическую вероятность выборок, тогда как matlab дает основные компоненты.

Из sklearn Документация :

Возвращает логарифмическую вероятность каждого образца.

Параметры:
X: массив, форма (n_samples, n_features) Данные.
Возвращает:
ll: массив, форма (n_samples,) Логарифмическая правдоподобие каждого образца в текущей модели

From документация по matlab :

[coeff, score, latent] = pca (___) также возвращает оценки главных компонентов в показателях и отклонения основных компонентов в скрытом состоянии.Вы можете использовать любой из входных аргументов в предыдущих синтаксисах.

Оценки главных компонентов - это представления X в пространстве главных компонентов .Строки оценки соответствуют наблюдениям, а столбцы соответствуют компонентам.

Главные дисперсии компонентов - это собственные значения ковариационной матрицы X.

Теперь эквивалент matlabscore в pca - это 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...