Проект анализу качества воздуха в Москве - детекции аномалий и предсказания измения концентрации частиц пыли c помощью вероятностной модели на основе Гауссовского процесса.
В этом проекте мы операемся на две основные статьи:
- https://www.aaai.org/ocs/index.php/AAAI/AAAI15/paper/viewFile/9712/9309 - в этой работе решается похожая задача, но используются данные за меньший промежуток времени, с меньшего количества станций, и признаков тоже меньше.
- https://papers.nips.cc/paper/2017/file/f31b20466ae89669f9741e047487eb37-Paper.pdf - описывается построение модели на основе Гауссовского процесса, которую можно дообучать на вновь поступающих данных, и пригодную для работы с большими данными (десятки - сотни тысяч наблюдений).
В проекте используются проекта данные общественного мониторнга воздуха проекта Luftdaten. Данные собираются с датчиков концентрации частиц, температуры, атмосферного давления и влажности воздуха и размещаются в открытом доступе. В Москве установкой станций мониторинга качества воздуха занимаются волонтеры breathe.moscov.
Информация о погоде в Москве используется по данным метеостанции Балчуг
Для версионирования данных и построения pipline в проекте используется Data Version Control (DVC).
- получение списка новых сенсоров
python -m src.data.get_sensor_list
- обновление данных с сенсоров
python -m src.data.update_data
- обновление данных метеостанции
python -m src.data.update_weather
+----------------------+ +----------------------+
| DATA/raw/sensors.dvc | | DATA/raw/weather.dvc |
+----------------------+ +----------------------+
*** *** *** ***
**** **** **** ***
*** ** ** ****
**** +-----------------+ ****
******* | extract_sensors | *******
******* +-----------------+ ******
****** * *******
******* * *******
**** * ****
+----------------+
| create_dataset |
+----------------+
Для запуска стадий pipline используйте dvc repro <stage.dvc> (подробнее)
- Запуск всех тестов (перед отправкой на PR):
python -m pytest --flake8 -v --cov-report term --cov=./src
- Запуск единичных тестов:
python -m pytest -vs tests/model/test_extract_anomalies.py::test_main