Извлечение данных при машинном обучении |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-07-21 04:02 Хотите узнать о трех методах получения данных для своего следующего проекта по ML? Тогда читайте перевод статьи Rebecca Vickery, опубликованной в блоге Towards Data Science на сайте Medium! Она будет интересна начинающим специалистам.
Получение качественных данных — это первый и наиболее важный шаг в любом проекте по машинному обучению. Специалисты Data Science часто применяют различные методы получения датасетов. Они могут использовать общедоступные данные, а также данные, доступные по API или получаемые из различных баз данных, но чаще всего комбинируют перечисленные методы. Цель этой статьи — представить краткий обзор трех разных методов извлечения данных с использованием языка Python. Я расскажу, как делать это с помощью Jupyter Notebook. В своей предыдущей статье я писала о применении некоторых команд, запускаемых в терминале. SQL Если вам нужно получить данные из реляционной базы данных, скорее всего, вы будете работать с языком SQL. Библиотека SQLAlchemy позволит связать ваш код в ноутбуке с наиболее распространенными типами баз данных. По ссылке вы найдете информацию о том, какие базы данных поддерживаются и как осуществить привязку к каждому типу. Вы можете использовать библиотеку SQLAlchemy, чтобы просматривать таблицы и запрашивать данные, или писать необработанные запросы. Для привязки к базе данных понадобится адрес URL с вашими идентификационными данными. Далее нужно инициализировать метод
Теперь вы можете писать запросы к базе данных и получать результаты.
Скрапинг Веб-скрапинг используется для загрузки данных с веб-сайтов и извлечения необходимой информации с их страниц. Существует множество библиотек Python, применимых для этого, но самой простой является Beautiful Soup. Вы можете установить пакет через pip.
Давайте на простом примере разберемся, как этим пользоваться. Мы собираемся применить Beautiful Soup и библиотеку urllib, чтобы соскрапить названия отелей и цены на них с веб-сайта TripAdvisor. Сначала импортируем все библиотеки, с которыми собираемся работать.
Теперь загружаем контент страницы, которую будем скрапить. Я хочу собрать данные о ценах на отели на греческом острове Крит и беру адрес URL, содержащий перечень отелей в этом месте. Код внизу определяет адрес URL как переменную и использует библиотеку urllib для открытия страницы, а библиотеку Beautiful Soup — для ее чтения и возвращения результатов в простом формате. Часть данных на выходе показана под кодом.
Теперь давайте получим список с названиями отелей на странице. Мы введем функцию find_all , которая позволит извлечь части интересующего нас документа. Можно по-разному фильтровать его, используя функцию find_all , чтобы передать одну строку, регулярное выражение или список. Также можно отфильтровать один из атрибутов тега — это как раз тот метод, который мы применим. Если вы не знакомы с тегами и атрибутами языка HTML, обратитесь за кратким обзором к этой статье. Чтобы понять, как наилучшим образом обеспечить доступ к данным в теге, нам нужно проверить код для этого элемента на странице. Находим код к названию отеля, кликая правой кнопкой мыши по названию в списке, как показано на рисунке ниже. После клика на inspect появится код элемента, а раздел с названием отеля будет выделен цветом.Мы видим, что название отеля — единственный кусочек текста в классе (class) с наименованием listing_title . После класса идет код и название этого атрибута к функции find_all , а также тег div .
Каждый раздел кода с названием отеля возвращается в виде списка. Чтобы извлечь названия отелей из кода, воспользуемся функцией getText библиотеки Beautiful Soup.
Названия отелей возвращаются в виде списка. Тем же способом получаем данные о цене. Структура кода для цены показана ниже. Как видите, мы можем работать с кодом, очень похожим на тот, что использовали для отелей.
В случае с ценой есть небольшая сложность. Ее можно увидеть, запустив следующий код:
Результат продемонстрирован ниже. Если в списке отелей указано уменьшение цены, в дополнение к некоторому тексту возвращается как исходная цена, так и итоговая. Чтобы устранить эту проблему, мы просто возвращаем цену, актуальную на сегодняшний день. Можем воспользоваться простой логикой, чтобы получить последнюю цену, указанную в тексте.
Это даст нам следующий результат: API API — программный интерфейс приложения (от англ. application programming interface). С позиции извлечения данных это веб-система, обеспечивающая конечную точку данных, с которой вы можете связаться посредством программирования. Обычно данные возвращаются в формате JSON или XML.
Мы будем использовать библиотеку requests , чтобы получить результаты для конкретной широты и долготы, а также дату и время. Представим, что после извлечения ежедневных данных о ценах на отели Крита мы решили выяснить, связана ли ценовая политика с погодой. Для примера давайте возьмем координаты одного из отелей в списке — Mitsis Laguna Resort & Spa. Сначала создадим URL с корректными координатами, а также запрашиваемыми временем и датой. Используя библиотеку requests , получим доступ к данным в формате JSON.
Чтобы результаты было легче читать и анализировать, мы можем преобразовать данные в датафрейм.
Есть еще много вариантов для автоматизации извлечения данных с помощью этих методов. В случае с веб-скрапингом можно написать разные функции, чтобы автоматизировать процесс и облегчить извлечение данных для большего количества дней и/или мест. В этой статье я хотела сделать обзор и привести достаточно примеров с кодом. Следующие материалы будут более подробными: я расскажу, как создавать большие датасеты и анализировать их, применяя описанные выше методы. Благодарю за внимание! Источник: habr.com Комментарии: |
|