Проект программы нанодипломов Udacity Data Scientist
Этот проект является частью программы Udacity Data Scientist Nanodegree: трубопроводный проект реагирования на стихийные бедствия, и его цель состояла в том, чтобы применить навыки инженерии данных, полученные в ходе курса, для анализа данных о стихийных бедствиях из Рисунка восемь для построения модель API, который классифицирует сообщения о бедствиях. Как всегда, давайте применим процесс CRISP-DM (межотраслевой процесс интеллектуального анализа данных), чтобы решить эту проблему:
- Деловое понимание
- Понимание данных
- Подготовить данные
- Моделирование данных
- Оцените результаты
- Развернуть
Деловое понимание
Во время и сразу после стихийного бедствия миллионы людей обращаются к организациям по реагированию на стихийные бедствия напрямую или через социальные сети. Организации реагирования на стихийные бедствия должны фильтровать и извлекать самые важные сообщения из этого огромного количества сообщений и перенаправлять конкретные запросы или указания в соответствующую организацию, которая заботится о медицинской помощи, воде, логистике и т. Д. В таких ситуациях важна каждая секунда, поэтому правильное обращение с сообщением - ключ к успеху.
Проект разделен на три раздела:
- Обработка данных: создайте конвейер 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.