Коэффициент нагрузки с использованием sklearn

Я хочу корреляции между отдельными переменными и главными компонентами в python. Я использую PCA в sklearn. Я не понимаю, как я могу получить матрицу загрузки после того, как я разложил свои данные? Мой код здесь.

iris = load_iris()
data, y = iris.data, iris.target
pca = PCA(n_components=2)
transformed_data = pca.fit(data).transform(data)
eigenValues = pca.explained_variance_ratio_

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html не упоминает, как это может быть достигнуто.

Ответы

Ответ 1

@RickardSjogren описывает собственные векторы, а @BigPanda дает нагрузки. Там большая разница: Нагрузки против собственных векторов в PCA: когда использовать тот или иной?.

Я создал этот класс PCA с помощью метода loadings.

Нагрузки, заданные pca.components_ * np.sqrt(pca.explained_variance_), более похожи на коэффициенты при множественной линейной регрессии. Я не использую .T здесь, потому что в классе PCA, указанном выше, компоненты уже транспонированы. numpy.linalg.svd создает u, s, and vt, где vt является транспонированием Герметиана, поэтому вам сначала нужно вернуться в v с помощью vt.T.

Существует еще одна важная деталь: знаки (положительные/отрицательные) на компонентах и ​​нагрузки в sklearn.PCA могут отличаться от таких пакетов, как R.  Подробнее об этом здесь:

В sklearn.decomposition.PCA, почему компоненты являются отрицательными?.

Ответ 2

В соответствии с этот блог строки pca.components_ являются векторами загрузки. Итак:

loadings = pca.components_

Ответ 3

Умножьте каждый компонент на квадратный корень из его соответствующего собственного значения:

pca.components_.T * np.sqrt(pca.explained_variance_)

Это приведет к созданию вашей загрузочной матрицы.