#python #matlab #scikit-learn
#python #matlab #scikit-учиться
Вопрос:
Я пользователь 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
?
Ответ №1:
У PCA sklearn есть score
метод, описанный в документации:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
Попробуйте: pca.score(X)
или pca.score_samples(X)
в зависимости от того, хотите ли вы оценку для каждого образца (последний) или одну оценку для всех образцов (первый)
Ответ №2:
PCA
Оценка в sklearn отличается от matlab.
В sklearn pca.score()
или pca.score_samples()
дает логарифмическую вероятность выборок, тогда как matlab предоставляет основные компоненты.
Возвращает логарифмическую вероятность каждого образца.
X :
Параметры: массив, форма (n_samples, n_features) Данные.
ll :
Возвращает: array, shape (n_samples,) Log-вероятность каждого образца в текущей модели
[coeff,score,latent] = pca(___) также возвращает оценки основных компонентов в score и отклонения основных компонентов в latent. Вы можете использовать любой из входных аргументов в предыдущих синтаксисах.
пространство главных компонентов
Оценки основных компонентов — это представления X в. Строки оценки соответствуют наблюдениям, а столбцы соответствуют компонентам.Отклонения основных компонентов являются собственными значениями ковариационной матрицы X.
Теперь эквивалентом matlab
score
в 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)