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

1. Вы сможете лучше объяснить свои рассуждения, поскольку в вашей модели меньше функций.

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

Итак, как нам установить featurewiz? Это очень просто: перейдите в командную строку на компьютере с Windows, Mac или Linux и введите:

pip install featurewiz-игнорировать-установлено-no-deps

В Kaggle или Colab нужно добавить еще пару установок:

!pip установить подушку == 9.0.0

!pip install xlrd — игнорировать-установлено — без отложений

После того, как вы сделали все вышеперечисленное, вы можете выбрать функцию с помощью featurewiz двумя способами. Первый метод преобразует ваши функции в числовые и возвращает измененный набор данных, который полностью преобразован, и гораздо меньше функций. Второй метод — это преобразование scikit-learn, которое просто возвращает меньше функций, но не преобразует их в числовые. Вы можете выбрать тот вариант, который лучше всего подходит для ваших нужд. Здесь мы будем использовать второй метод.

импортировать featurewiz как gwiz

Основная функция featurewiz — выбрать лучшие функции из вашего набора данных. Но возникает следующий вопрос: как это сделать? Вот почему нам нужно установить verbose=1, чтобы увидеть все выходные данные, которые он генерирует.

wiz =gwiz.FeatureWiz(verbose=1)

wiz — это класс, который действительно является преобразователем scikit-learn, в котором есть специальный метод, называемый featurewiz, который выбирает лучшие функции. В этом случае мы выберем набор данных из UCI здесь. Как только мы загрузим его во фрейм данных pandas в Python, мы можем передать фрейм данных с именем df вместе с целевой переменной, которую мы пытаемся выбрать на основе target = MEDV, для featurewiz. Вот и все!

X_train, y_train = wiz.fit_transform (поезд [предыдущий], поезд [цель])

X_test = wiz.transform(test[preds])

Проверка набора данных о жилье

Это знаменитый набор данных о жилье в Бостоне, который довольно мал и содержит 506 строк и 13 независимых переменных, за исключением целевой переменной MEDV (или медианного значения). Цель нашего выбора функций — найти, какие переменные лучше всего подходят для прогнозирования нашей цели. Сначала давайте посмотрим на первые 5 строк фрейма данных.

Большинство начинающих специалистов по данным попытаются предсказать медианную стоимость жилья, используя «все» 13 независимых переменных. Допустим, мы делаем тот же шаг и используем все переменные в нашей исходной модели.

Теперь давайте посмотрим, сможем ли мы добиться большего успеха, делая меньше: что, если бы мы использовали меньше переменных и построили модель, которая работает так же хорошо, как описанная выше модель? Как насчет того, чтобы использовать на 50% меньше переменных? Большинство из вас может подумать, что это почти невозможно, но именно это мы и собираемся сделать благодаря featurewiz!

featurewiz показывает нам так много диаграмм, чтобы помочь нам понять, как он это делает. Сначала он покажет вам, как он использует метод SULOV для удаления сильно коррелированных переменных из вашего набора данных.

Обратите внимание, что featurewiz выбрал всего 6 переменных (почти на 50% меньше), чем было в наборе данных.

Кроме того, вы можете видеть на приведенных ниже диаграммах: модель со всеми приведенными ниже функциями имеет R-квадрат 91% и среднеквадратичное отклонение 2,91 на протянутом наборе тестовых данных (не показано).

Мы видим, что приведенная выше модель работает хуже, чем модель с выбранными функциями, представленными ниже, которая имеет R_squared 92% и RMSE 2,79.

Тестирование набора данных о продажах автомобилей

Если вы думаете, что это может быть просто случайностью или совпадением, давайте попробуем другой крайний случай, когда выбор меньшего количества функций также превосходит модель со всеми функциями. Это из набора данных car_sales, который можно найти здесь.

Обратите внимание, как меньшее количество переменных в модели (рис. 6) превосходит модель со всеми функциями (рис. 7).

Вот модель со всеми функциями из набора данных о продажах автомобилей.

Но некоторые из вас могут задаться вопросом, почему модель с меньшим количеством функций превосходит модель со всеми функциями? Две основные причины:

1. Простые модели обобщают лучше, чем сложные модели, поэтому точность модели повышается.

2. Меньшее количество переменных означает более быстрое обучение и прогнозирование (в реальных случаях это имеет большое значение!)

Резюме и ссылки:

Блокнот и наборы данных для сообщения в блоге находятся здесь, в этом github:

https://github.com/AutoViML/featurewiz/tree/main/examples

Надеюсь, теперь вы научились создавать быстрые и точные модели с помощью одной строки кода даже для очень больших наборов данных. До тех пор удачного выбора функций с помощью featurewiz!