Быстрый старт с использованием sk-leran для уменьшения размерности PCA

искусственный интеллект

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность

В этой статье мы расскажем, как использовать sk_learn, набор инструментов для машинного обучения, для уменьшения размерности PCA.

PCA: анализ основных компонентов

1. Введение

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

  • Обобщим шаги алгоритма PCA:

    Есть m частей n-мерных данных.

    1. Сформируйте исходные данные в матрицу X с n строками и m столбцами;
    2. нуль означает каждую строку X, то есть вычесть среднее значение этой строки;
    3. Найдите ковариационную матрицу[公式];
    4. Найдите собственные значения ковариационной матрицы и соответствующие собственные векторы, расположите собственные векторы в матрице сверху вниз в соответствии с размерами соответствующих собственных значений и возьмите первые k строк, чтобы сформировать матрицу P;
    5. [公式]То есть данные после приведения размерности к k-мерности.

Конкретное происхождение см.zhuanlan.zhihu.com/p/77151308【Должен видеть! ! ! ! ! ! 】

2. Реализация кода

import sklearn.decomposition as sk_decomposition
​
pca = sk_decomposition.PCA(n_components=3,whiten=False,svd_solver='auto')
pca.fit(fr)
result = pca.transform(fr)
print(result)
print ('降维后的各主成分的方差值占总方差值的比例',pca.explained_variance_ratio_)
print ('降维后的各主成分的方差值',pca.explained_variance_)
print ('降维后的特征数',pca.n_components_)

3. Подробное объяснение PCA sklearn

3.1 Параметры

  • n_components: этот параметр может помочь нам указать количество измерений объектов, которые мы хотим уменьшить PCA. Наиболее распространенной практикой является прямое указание количества измерений, до которых необходимо уменьшить размер, и в этом случае n_components является целым числом, большим или равным 1. Конечно, мы также можем указать дисперсию основных компонентов и минимальный порог доли, и позволить классу PCA решить количество измерений, чтобы уменьшить размерность в соответствии с дисперсией характеристик выборки, В настоящее время n_components — это число между (0, 1]. Конечно, мы также можем установить параметр «mle». В это время класс PCA будет использовать алгоритм MLE для выбора определенного количества функций главного компонента для уменьшения размерности в соответствии с дисперсией распределение функций.Мы также можем использовать значение по умолчанию, то есть нет входных n_components, в настоящее время n_components=min (количество образцов, количество функций);
  • whiten: Определяет, отбеливать или нет. Так называемое отбеливание предназначено для нормализации каждой характеристики уменьшенных по размерности данных, чтобы дисперсия равнялась 1. Для самого уменьшения размерности PCA отбеливание обычно не требуется. Если у вас есть последующие действия по обработке данных после уменьшения размерности PCA, вы можете рассмотреть возможность отбеливания. Значение по умолчанию — False, то есть отбеливание не выполняется;
  • svd_solver: То есть метод задания сингулярной декомпозиции SVD.Поскольку собственная декомпозиция является частным случаем сингулярной декомпозиции SVD, общие библиотеки PCA реализованы на основе SVD. Есть 4 значения на выбор: {'auto', 'full', 'arpack', 'randomized'}. Рандомизированный, как правило, подходит для уменьшения размерности PCA с большим объемом данных, многими размерностями данных и низкой долей количества основных компонентов.Он использует некоторые случайные алгоритмы, которые ускоряют SVD. full — это SVD в традиционном понимании, использующая соответствующую реализацию библиотеки scipy. Применимые сценарии arpack и randomized аналогичны, разница в том, что randomized использует собственную реализацию SVD scikit-learn, а arpack напрямую использует разреженную реализацию SVD библиотеки scipy. Значение по умолчанию — auto, то есть класс PCA сам взвесит три алгоритма, упомянутых выше, и выберет подходящий алгоритм SVD для уменьшения размерности. Как правило, достаточно использовать значения по умолчанию;

3.2 Свойства

print ('降维后的各主成分的方差值占总方差值的比例',pca.explained_variance_ratio_)
print ('降维后的各主成分的方差值',pca.explained_variance_)
print ('降维后的特征数',pca.n_components_)