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

Я буду говорить о невероятностном PCA и о том, как построить график важности признаков с помощью PCA. Другие типы PCA, а именно ядерный, вероятностный и разреженный, я рассмотрел в своих последующих статьях.

Для целей этого поста я использовал набор данных о раке молочной железы, который вы можете легко скачать по этой ссылке:

https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data

Шаг 1: Импорт данных

Набор данных состоит из 569 строк и 32 столбцов признаков. Хотя PCA используется для ускорения процессов машинного обучения для гораздо более тяжелых наборов данных, я все же собираюсь использовать его здесь.

Шаг 2. Преобразование данных

Нормализация важна в PCA, поскольку это процесс максимизации дисперсии. Он проецирует исходные данные на направления, которые максимизируют дисперсию. Новые оси основаны на стандартном отклонении переменных, поэтому при нормализации данных все переменные будут иметь одинаковое стандартное отклонение и одинаковый вес. Таким образом вычисляется соответствующая ось.

Шаг 3: Сплит-тестирование

Я разделил данные, используя функцию разделения sklearntrain-test, а затем сразу закодировал целевую переменную, поскольку мы имеем дело с категориальной переменной.

Шаг 4: Применение PCA

Итак, теперь, когда мы разделили данные и они готовы к подготовке модели, мы переходим к применению PCA. Во-первых, мы импортируем функцию из библиотеки sklearn, а затем подгоним только обучающую выборку, используя ее.

explained_var принимает совокупную сумму всех компонентов в порядке убывания, пока мы не получим единицу. Мы можем использовать это, чтобы понять, сколько основных компонентов нам нужно, чтобы объяснить дисперсию данных, тем самым повысив точность нашей модели.

Отсюда видно, что лучше всего будет взять 16 компонентов. Но explained_var[16] = 0,99177181, и с этого момента оно продолжает увеличиваться. Итак, давайте составим сюжет, чтобы увидеть, что происходит.

Величина дисперсии, объясняемая как функция компонентов, увеличивается, хотя и увеличивается очень незначительно. Итак, пока давайте просто возьмем 16–17 компонентов в нашей модели.

Чтобы выяснить, какие из 16 основных компонентов являются первыми, давайте построим график важности признаков, присвоив им веса.

Теперь мы можем ввести первые 17 признаков (основных компонентов) в наш алгоритм линейной регрессии.

Результаты

Линейная регрессия: без PCA

С ПСА

Я сохранил первые 17 основных компонентов в переменной X_train_pca, и мы видим огромный скачок в точности.

Логистическая регрессия: без PCA

С ПСА

Вывод

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

Я рассмотрел различные виды PCA в других моих сообщениях. Пожалуйста, взгляните и спасибо за чтение!