Как выполнять отбор признаков с помощью Scikit-Learn

Отбор признаков с Scikit-Learn

Как выбрать важные функции для вашей модели машинного обучения

Фото Timothy Muza на Unsplash

Выбор функций – это выбор наиболее значимых функций для основных проблем. В предиктивном машинном обучении мы выбираем функции, подходящие для улучшения возможностей прогнозирования модели.

Существует множество методов для выполнения выбора функций, включая статистический анализ, такой как метод Хи-квадрат, или более продвинутый, такой как важность функций модели. Также лучший способ выполнения выбора функций – это обладание хорошими знаниями в области.

В Scikit-Learn мы можем использовать различные функции для выполнения выбора функций. Какие это функции? Давайте в этом разберемся.

1. VarianceTreshold

Простейший метод выбора функций использует определенную базовую величину в качестве правила. В Scikit-Learn есть функция под названием VarianceTreshold, которая выбирает функции на основе порога вариации.

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

Статистически вариация измеряет, как наши данные распространяются на основе среднего значения данных. Оценка вариации показывает, насколько широко данные распространены между средним значением и каждым другим. Чем выше оценка, тем шире распространены данные.

Давайте попробуем функцию VarianceTreshold на примере набора данных. Сначала создадим простой набор данных, который мы будем использовать.

import pandas as pdimport numpy as npX = pd.DataFrame(    [[0, 2, 0, 3],      [0, 1, 4, 3],      [0, 1, 1, 3]], columns = 'a b c d'.split())X

Давайте измерим вариацию каждого столбца перед выполнением выбора функций.

for i in X.columns:    print(f'Вариация столбца {i}: {np.var(X[i])}')

Мы видим, что столбцы a и d имеют вариацию 0, потому что все значения внутри их столбцов одинаковы. В отличие от этого, столбец c имеет наибольшую вариацию, так как данные более широко распространены. Теперь давайте используем функцию VarianceTreshold для выполнения выбора функций.