Как интерпретировать PCA Scikit-learn, когда n_components None? - PullRequest
0 голосов
/ 03 августа 2020

Меня смущает проблема, указанная в заголовке. Означает ли n_components=None, что во входных данных не было выполнено преобразование, или что он был преобразован в новое размерное пространство, а вместо обычного «сокращения» (с сохранением нескольких компонентов с высокими собственными значениями) с сохранением всех новых функций Syntheti c ? Документация предлагает мне первое:

Следовательно, случай None приводит к: n_components == min(n_samples, n_features) - 1

Но это не совсем ясно, и, кроме того, если это действительно означает сохранение всех компонентов, почему, черт возьми, их количество равно n_components == min(n_samples, n_features) - 1, почему бы не n_features?

Однако я нахожу другую альтернативу (в случае None , отбрасывая весь шаг PCA), я никогда не слышал о применении PCA без исключения некоторых собственных векторов ...

1 Ответ

0 голосов
/ 04 августа 2020

Согласно официальной документации -

Если svd_solver == 'arpack', количество компонентов должно быть строго меньше, чем минимум n_features и n_samples. Следовательно, случай None приводит к: n_components == min (n_samples, n_features) - 1

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

Если arpack: запустить SVD, усеченный до n_components, вызывая решатель ARPACK через scipy.sparse.linalg.svds. Для этого требуется строго 0

Что касается вашего второго запроса об удалении всего шага PCA, это полностью зависит от того, что вы пытаетесь решить. Поскольку компоненты PCA объясняют вариацию данных в порядке убывания (1-й компонент объясняет максимальную дисперсию, последний компонент объясняет наименьшую дисперсию), для определенных c задач может быть полезно иметь некоторые особенности, объясняющие большую дисперсию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...