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

Вот схема нашего проекта:

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

Подведем итоги: в конце части 1 у нас было:

  1. Создал надежный веб-скребок для автоматической загрузки тысяч .mp3 невероятных космических шумов.
  2. Настройте экземпляр AWS EC2, чтобы мы могли разместить все эти mp3 в томе EBS, и позволить скрипту работать в течение ночи через туннелирование SSH, даже после того, как мы закроем наш ноутбук (см. Мое руководство по SSH).

Ух! Хорошо, я знаю, что это уже кажется большим, но для того, чтобы сделать сбор данных надежным, есть еще один обходной путь, который нам нужно сделать, прежде чем продолжить: нам нужен способ гарантировать, что скрипт продолжает работать независимо от туннеля SSH. (т.е. сценарий не завершается, если / когда туннель закрывается в 3 часа ночи, и да, я говорю из первых рук).

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

  1. Войдите под своим пользователем в свой экземпляр EC2 на своем терминале.
  2. Запустите новый сеанс tmux из того же окна терминала.
  3. Запустите свой сценарий в сеансе tmux и отключитесь.

Я использовал tmux, чтобы выполнять парсинг веб-страниц всю ночь, а также свой скрипт извлечения функций. Что касается процесса извлечения признаков, я использовал пакет Python для анализа звука под названием Librosa.

Librosa позволила мне разбить композитный звук на отдельные элементы, зачем нам это нужно?

Это аудио (необработанная волна) прямо из нашего процесса парсинга. В нем содержится так много информации, но в такой форме он слишком шумный , чтобы вводить его непосредственно в алгоритм машинного обучения.

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

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

Теперь, когда мы извлекли все наши функции, как нам решить, какие функции будут полезны для дифференциации этого перечня данных НАСА, которые мы извлекли в части 1? Кроме того, как мы программно сохраняем данные из конвейера, который мы создали в нашем экземпляре EC2? Все эти темы будут рассмотрены в следующих публикациях, а также на нашем последнем этапе обнаружения аномалий. Будьте на связи.

* На момент публикации статьи (06.03.20) я активно ищу работу / прохожу собеседование. Свяжитесь с нами, если вы нанимаете на должность аналитика / аналитика данных. Спасибо!