Проект программы нанодипломов Udacity Data Scientist

Этот проект является частью программы Udacity Data Scientist Nanodegree: трубопроводный проект реагирования на стихийные бедствия, и его цель состояла в том, чтобы применить навыки инженерии данных, полученные в ходе курса, для анализа данных о стихийных бедствиях из Рисунка восемь для построения модель API, который классифицирует сообщения о бедствиях. Как всегда, давайте применим процесс CRISP-DM (межотраслевой процесс интеллектуального анализа данных), чтобы решить эту проблему:

  1. Деловое понимание
  2. Понимание данных
  3. Подготовить данные
  4. Моделирование данных
  5. Оцените результаты
  6. Развернуть

Деловое понимание

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

Проект разделен на три раздела:

  • Обработка данных: создайте конвейер ETL (извлечение, преобразование и загрузка) для извлечения данных из заданного набора данных, очистки данных и затем сохранения их в базе данных SQLite.
  • Конвейер машинного обучения: разделите данные на обучающий набор и тестовый набор. Затем создайте конвейер машинного обучения, который использует NLTK, а также конвейер scikit-learn и GridSearchCV для вывода окончательной модели, которая прогнозирует классификации сообщений для 36 категорий (классификация с несколькими выходами).
  • Веб-разработка: разработка веб-приложения для отображения классифицированных сообщений в режиме реального времени.

Понимание данных

Набор данных, предоставленный Рисунок 8, содержит 30000 сообщений, извлеченных из событий, включая землетрясение на Гаити в 2010 году, землетрясение в Чили в 2010 году, наводнение в Пакистане в 2010 году, супер-ураган Сэнди в США в 2012 году, а также новостные статьи, охватывающие большое количество лет и сотен разных бедствий. Сообщения были классифицированы по 36 различным категориям, связанным с реагированием на стихийные бедствия, и они полностью лишены конфиденциальной информации. Также был предоставлен перевод с языка оригинала на английский. Подробнее о наборе данных здесь

Подготовить данные

Предоставляемый набор данных в основном состоит из двух файлов:

  • Disaster_categories.csv: категории сообщений.
  • Disaster_messages.csv: многоязычные сообщения о стихийных бедствиях.

Этапы подготовки данных:

1 Объедините два набора данных
2 Разделите категории на отдельные столбцы категорий
3 Одноразовое кодирование категории
4 Удалить дубликаты
5 Загрузить в базу данных SQLite

В итоге мы получаем SQL-таблицу, содержащую сообщения и все их атрибуты:

- идентификатор
-
сообщение - оригинал
- жанр
- связанный
- запрос
- предложение
- помощь_связано
- медицинская_помощь
- одежда
- деньги
- пропавшие_ люди
- беженцы
- смерть
- другая_помощь
- связанные с инфраструктурой
- транспорт
- здания
- электричество
- инструменты
- больницы
- магазины
- центры_помощи
- другая_инфраструктура
- связанные с погодой
- наводнения
- шторм
- пожар
- землетрясение
- холод
- другая_погода
- direct_report

Моделирование данных

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

1 Загрузите данные
2 Создайте конвейер машинного обучения
3 Обучите конвейер машинного обучения
4 Протестируйте модель
5 Настройте модель
6 Оцените результаты
7 Экспорт модели

Компоненты, используемые в конвейере:

  • CountVectorizer: преобразование коллекции текстовых документов в матрицу счетчиков токенов.
  • TfidfTransformer: преобразовать матрицу подсчета в представление tf-idf (частота термина, умноженная на обратную частоту документа).
  • MultiOutputClassifier: классификация с несколькими целями.

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

TFIDF - это числовая статистика, предназначенная для отражения того, насколько важно слово для документа в коллекции. Прочтите эту фантастическую статью на Quora для получения дополнительной информации.

Модель, наконец, сохраняется для загрузки, а затем используется для классификации сообщений в реальном времени.

Оцените результаты

Набор данных сильно несбалансирован, и это причина того, что точность высока, а значение отзыва довольно низкое.

Чтобы справиться с несбалансированным набором данных, есть много способов, как показано в этом действительно интересном среднем посте.

Развернуть

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

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

Вы можете опробовать его на моем сайте на этой странице

Примечание. Код можно найти в этом репозитории на github.