Нахождение измерения с наибольшей дисперсией с помощью scikit-learn PCA

Мне нужно использовать pca для определения размеров с наибольшей дисперсией определенного набора данных. Я использую scikit-learn pca для этого, но я не могу определить по выходным данным метода pca, какие компоненты моих данных с наибольшей дисперсией. Имейте в виду, что я не хочу исключать эти измерения, а только идентифицировать их.

Мои данные организованы в виде матрицы со 150 строками данных, каждая из которых имеет 4 измерения. Я делаю следующее:

pca = sklearn.decomposition.PCA()
pca.fit(data_matrix)

Когда я печатаю pca.explained_variance_ratio_, он выводит массив отношений дисперсии, упорядоченных от самого высокого до самого низкого, но он не сообщает мне, какому измерению из данных они соответствуют (я пытался изменить порядок столбцов в моей матрице, и результирующий массив отношения дисперсии был таким же).

Печать pca.components_ дает мне матрицу 4x4 (я оставил исходное количество компонентов в качестве аргумента для pca) с некоторыми значениями, значение которых я не могу понять ... согласно документации scikit, они должны быть компонентами с максимальной дисперсией (возможно, собственными векторами?), но без знака того, к какому измерению относятся эти значения.

Преобразование данных тоже не помогает, потому что размеры изменены так, что я не могу точно знать, какие они были изначально.

Есть ли способ получить эту информацию с помощью scikit pca? Спасибо


person Alberto A    schedule 12.03.2013    source источник
comment
Первая строка components_ - это направление максимальной дисперсии, как указано в документации. Я не совсем уверен, что в этом неясного. Записи в explained_variance_ratio_ соответствуют строкам components_. Как вы имеете в виду отсутствие признаков того, к какому измерению относятся эти значения?   -  person Andreas Mueller    schedule 13.03.2013
comment
Что ж, моя проблема в том, что, учитывая, что у меня есть 4 измерения в моих данных, и я хочу сохранить только измерение с двумя измерениями с наибольшей дисперсией, как мне узнать, какие измерения моих данных были бы сохранены, если бы я применил PCA с n_components = 2. Например, предположим, что второе и четвертое измерения моих данных имеют наибольшую дисперсию, но я этого не знаю. Я хочу применить PCA и у меня есть способ получить эту информацию из результатов. Опять же, мне не нужно преобразовывать данные!   -  person Alberto A    schedule 13.03.2013


Ответы (1)


Возвращаемое pca.explained_variance_ratio_ - это отклонения от основных компонентов. Вы можете использовать их, чтобы узнать, сколько измерений (компонентов) ваши данные могут быть лучше преобразованы с помощью pca. Вы можете использовать для этого порог (например, вы подсчитываете, сколько отклонений больше 0,5, среди прочего). После этого вы можете преобразовать данные с помощью PCA, используя количество измерений (компонентов), которые равны основным компонентам, превышающим используемый порог. Данные, приведенные к этим измерениям, отличаются от данных по измерениям в исходных данных.

вы можете проверить код по этой ссылке:

http://scikit-learn.org/dev/tutorial/statistical_inference/unsupervised_learning.html#principal-component-analysis-pca

person mad    schedule 13.03.2013
comment
Помогает, но не решает мою проблему. Мне нужно знать, какие размеры моих исходных данных будут удалены, когда я преобразую свои данные с помощью PCA и выберу, например, n_components = 2. В этом случае 2 измерения будут удалены, но моя проблема заключается в том, чтобы знать, какие размеры. - person Alberto A; 13.03.2013
comment
PCA не исключает размеры и удерживает другие из исходных данных. Он преобразует ваши данные в нескольких измерениях, данные которых полностью отличаются от исходных. - person mad; 13.03.2013
comment
Да, ты прав. Я снова читал PCA, и то, что я хочу, не имеет смысла из-за того, что вы сказали. Что ж, принимаю твой ответ! Спасибо. - person Alberto A; 13.03.2013
comment
1-й ПК указывает в сторону наибольшего разброса. Индекс этого вектора, принадлежащий его наибольшему значению, является измерением наибольшей дисперсии. - person Ulf Aslak; 27.03.2016
comment
@mad большое спасибо за ваш комментарий. Я понял, как работает PCA из этого. Другой вопрос: если я хочу удалить такие функции, как задал OP, какой метод мне следует использовать? - person gokul_uf; 21.04.2016
comment
@gokul_uf вам может помочь выбор функций: scikit-learn.org/stable/modules /feature_selection.html. - person Alberto A; 28.04.2016