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

Есть несколько причин для проведения разработки признаков перед использованием алгоритма ML. Наиболее распространенным является извлечение признаков. Извлечение признаков включает преобразование категориальных (названия городов, род занятий и т. д.), номинальных (низкий, средний, высокий и т. д.), текстовых (например, веб-страниц, документов и т. д.) и мультимедийных (изображения, видео и т. д.) признаков в непрерывные переменные.

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

Как только мы получим соответствующие векторы признаков, мы будем визуализировать многомерные данные. Для этого мы кластеризуем данные, а затем применяем анализ основных компонентов (PCA), используемый для уменьшения численной размерности, чтобы подготовить фрейм данных для построения графика. Затем мы используем уменьшенный 2D-фрейм данных извлеченных функций для визуализации. Чтобы запустить блокнот или файл Python для этого упражнения, вам необходимо правильно установить и настроить spark, а затем установить pyspark в свою среду. Без дальнейших церемоний.

Загрузка данных

Используемые данные взяты из репозитория UCI ML, https://archive.ics.uci.edu/ml/datasets/bank+marketing из кампании прямого маркетинга банка, с удаленными столбцами, непосредственно связанными с доходом. Идея состоит в том, чтобы определить вероятность успешного исхода (внесение срочного депозита) на основе дохода человека. Убедитесь, что файл bank.csv находится в той же папке, что и блокнот или файл python. Вот как загрузить файл и вывод:

Затем мы выбираем функции, которые нас интересуют для нашей модели, а именно: «возраст», «работа», «брак», «образование», «по умолчанию», «баланс», «жилье», «кредит», «кампания». , «дней», «предыдущий», «результат» и «y», которая является целевой переменной (независимо от того, был ли сделан срочный депозит).

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

Данные содержат категориальные переменные в столбцах «работа», «брак», «образование», «дефолт», «жилье», «кредит» и «результаты». Сначала мы используем StringIndexer, чтобы преобразовать категориальные значения в индексы категорий, которые затем преобразуются OneHotEncoder в столбец двоичных векторов для каждого из столбцов, как показано ниже:

Это приводит к следующему результату:

Данные стандартизированы путем масштабирования, как показано:

Затем мы берем масштабированные векторы и преобразуем их в один вектор-столбец, используя VectorAssembler, как показано ниже:

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

Затем мы используем функции для построения графика после применения PCA, как показано ниже:

После того, как модель создана выше, мы визуализируем ее, получая следующую диаграмму рассеяния:

Это можно лучше показать, построив его в виде диаграммы рассеяния, как показано на рисунке:

Вывод

Из визуализации видно, что есть 3 кластера, как показано ниже:

Это позволяет нам определять сильные закономерности, содержащиеся в очень сложных и многомерных данных, и направлять дальнейший анализ данных и разработку моделей. Код упражнения можно найти здесь https://github.com/dkabii/bankspark.

Спасибо за ваше время и оставайтесь с нами.