Строим конвейеры с Pandas, используя “pdpipe” |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-01-09 10:00 Введение Pandas — прекрасная библиотека в экосистеме Python для анализа данных и машинного обучения. Она идеально соединяет мир данных, где живут файлы Excel/CSV и таблицы SQL, и мир моделирования, где свою магию творят Scikit-learn или TensorFlow. Поток в науке о данных чаще всего представляет собой последовательность шагов: наборы данных должны быть очищены, нормализованы и проверены перед тем, как будут готовы к использованию этим мощным алгоритмом машинного обучения. Эти задачи, разумеется, можно выполнить с помощью множества одношаговых функций или методов, предложенных в Pandas и ей подобных пакетах, но более элегантный путь — это использование конвейеров. В большинстве случаев конвейеры снижают шанс возникновения ошибки и экономят время за счет автоматизации повторяющихся задач. В мире науки о данных великолепными примерами пакетов с конвейерами являются dplyr в R и Scikit-learn в экосистеме Python. Поток в науке о данных чаще всего представляет собой последовательность шагов: наборы данных должны быть очищены, нормализованы и проверены перед тем, как будут готовы к использованию. Pandas также предлагает метод В большинстве случаев конвейеры снижают шанс возникновения ошибки и экономят время за счет автоматизации повторяющихся задач. Конвейеры с Pandas Пример конвейера можно найти в моем репозитории на Github. Давайте посмотрим, как создавать полезные конвейеры при помощи этой библиотеки. Набор данных В демонстрационных целях используем набор данных с ценами на дома в США из каталога Kaggle. Мы можем загрузить набор данных в Pandas и увидеть сводную статистику: В наборе также есть поле “Address”, содержащее текстовые данные: Добавление колонки size (размер дома) Для демонстрации добавим к набору данных колонку, содержащую размер дома, используя следующий код: После этого набор данных выглядит так: Простейший конвейер — одна операция Начнем с простейшего конвейера, содержащего только одну операцию (не беспокойтесь, скоро мы добавим сложности). Скажем, команда машинного обучения и предметные специалисты утверждают, что для моделирования мы можем пренебречь данными Для этой задачи создадим объект конвейера import pdpipe as pdp Как и ожидалось, итоговый DataFrame выглядит следующим образом: Объединяем этапы конвейера простым добавлением Конвейеры практичны и удобны только в случае использования нескольких этапов. В pdpipe существует несколько методов сделать это, однако простейший и наиболее интуитивно понятный подход — это использование оператора +. Прямо как соединение труб вручную! Допустим, кроме удаления колонки возраста мы хотим получить кодирование категорий колонки pipeline = pdp.ColDrop(‘Avg. Area House Age’) Итак, сначала мы создали объект конвейера с методом Ниже итоговая таблица. Обратите внимание на две дополнительные колонки Удаление строк на основе их значения Далее можно удалить строки данных, основываясь на их значениях. Например, удалим все данные, где цена на дом ниже 250,000. У нас есть метод def price_tag(x): pipeline+=pdp.ApplyByCols('Price',price_tag,'Price_tag',drop=False) Первый метод помечает строки на основе значения в колонке Второй метод ищет строку Все это сделано простым объединением этапов в одном конвейере! Давайте вернемся и с самого начала рассмотрим, что наш конвейер делает с таблицей данных:
И все это за пять строк кода: pipeline = pdp.ColDrop('Avg. Area House Age') df5 = pipeline(df) Обновление последней версии: удаление строк напрямую! В разговоре с автором пакета я выяснил, что в последней версии удаление строки (удовлетворяющей заданному условию) будет выполняться одной строчкой кода с использованием лямбда-функции: pdp.RowDrop({‘Price’: lambda x: x <= 250000}) Этапы Scikit-learn и NLTK Существует множество более полезных и интуитивно понятных методов для манипуляций с DataFrame. Однако мы хотим показать, что даже некоторые операции из пакетов Scikit-learn и NLTK, включенные в pdpipe, позволяют создавать отличные конвейеры. Оценка нормализации из Scikit-learn Одна из наиболее распространенных задач в создании моделей машинного обучения — это нормализация данных. Scikit-learn предлагает несколько типов нормализации, таких как Min-Max или нормализация на основе стандартизации (где среднее значение из набора данных вычитается с последующим делением на стандартное отклонение). Мы можем непосредственно связать подобные операции в конвейер. Нижеследующий код это демонстрирует: pipeline_scale = pdp.Scale('StandardScaler',exclude_columns=['House_size_Medium','House_size_Small']) df6 = pipeline_scale(df5) Здесь мы применили функцию оценки Вуаля! У нас есть нормализованный DataFrame: Токенизатор NLTK Заметим, что поле “Address” сейчас довольно бесполезно. Однако оно может пригодиться для некоторой визуализации или задач машинного обучения, если мы сможем выделить из него индекс или название штата. Для этой цели можно использовать токенизатор слов. NLTK — это популярная и мощная библиотека Python для интеллектуального анализа текста и обработки естественного языка (NLP), которая предлагает ряд методов токенизатора. Здесь мы можем использовать такой токенизатор для расщепления текста в поле адреса и выделения из него названия штата. Мы знаем, что название штата является предпоследним словом в адресной строке. Следовательно, следующий конвейер выполнит для нас эту работу: def extract_state(token): pipeline_tokenize=pdp.TokenizeWords('Address') pipeline_state = pdp.ApplyByCols('Address',extract_state, pipeline_state_extract = pipeline_tokenize + pipeline_state df7 = pipeline_state_extract(df6) Итоговый DataFrame выглядит так: Итог Все эти операции можно использовать в аналогичных типах наборов данных. И очень бы пригодился простой набор последовательных блоков кода для выполнения предварительной обработки набора данных для последующего моделирования. Использование конвейеров — ключ к получению такого единого набора последовательных блоков кода. Pandas —это наиболее широко используемая библиотека Python для подобных задач предварительной обработки в командах машинного обучения или науки о данных,а pdpipe предоставляет простой, но мощный путь для создания конвейеров с операциями типа Pandas, которые непосредственно применяются к объектам Pandas DataFrame. Исследуйте эту библиотеку самостоятельно и создавайте мощные конвейеры для своих специфических задач. Читайте также:
Перевод статьи Tirthajyoti Sarkar: Build pipelines with Pandas using pdpipe Источник: m.vk.com Комментарии: |
|