Skip to content

Nerdlin/streamlit_air_quality_mvp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌍 Air Quality Monitor MVP - Kazakhstan

Минимально жизнеспособный продукт (MVP) для мониторинга качества воздуха в Казахстане с использованием машинного обучения, Explainable AI и интеграции со спутниковыми данными.

🎯 Обзор проекта

Это демонстрационное приложение показывает возможности современной платформы мониторинга качества воздуха, включающей:

  • 📊 Real-time Dashboard - мониторинг текущего состояния качества воздуха
  • 🔮 ML Прогнозирование - предсказание PM2.5 на 48 часов вперед
  • 🧠 Explainable AI - понимание факторов влияния через SHAP
  • 📡 IoT Симуляция - демонстрация сети датчиков
  • 🛰️ Спутниковые данные - интеграция с NASA MODIS и ESA Sentinel

🚀 Быстрый старт

Требования

  • Python 3.8+
  • pip
  • Streamlit

Установка

  1. Клонируйте или скачайте проект:
cd streamlit_air_quality_mvp
  1. Установите зависимости:
pip install -r requirements.txt
  1. Запустите приложение:
streamlit run main.py
  1. Откройте браузер: Приложение будет доступно по адресу: http://localhost:8501

📋 Структура проекта

streamlit_air_quality_mvp/
├── main.py                              # Главная страница (Dashboard)
├── pages/                               # Дополнительные страницы
│   ├── 1_🔮_PM2.5_Forecast.py          # Страница прогнозирования
│   ├── 2_🧠_Explainable_AI.py          # Explainable AI с SHAP
│   ├── 3_📡_IoT_Data_Simulation.py     # Симуляция IoT данных
│   └── 4_🛰️_Satellite_Data_Demo.py    # Демо спутниковых данных
├── models/                              # ML модели
│   ├── pm25_predictor.py               # Модель прогнозирования PM2.5
│   └── pm25_demo_model.pkl             # Обученная модель (создается автоматически)
├── utils/                              # Вспомогательные функции
│   ├── data_generator.py               # Генерация демо-данных
│   └── visualization.py               # Функции визуализации
├── data/                               # Директория для данных
├── requirements.txt                    # Python зависимости
└── README.md                          # Этот файл

🌟 Основные возможности

1. 📊 Dashboard (Главная страница)

  • Интерактивная карта с размещением датчиков
  • Текущие показания PM2.5, температуры, влажности, ветра
  • Цветовое кодирование по нормам ВОЗ
  • Временные графики за последние 24 часа
  • Heatmap загрязнения по региону

2. 🔮 Прогнозирование PM2.5

  • Machine Learning модели: Random Forest, Linear Regression
  • Горизонт прогноза: до 72 часов
  • Доверительные интервалы для предсказаний
  • Анализ факторов влияния на качество воздуха
  • Риск-анализ и рекомендации

3. 🧠 Explainable AI

  • SHAP анализ для интерпретации модели
  • Глобальная важность признаков
  • Локальные объяснения для каждого предсказания
  • Waterfall графики вкладов факторов
  • Корреляционный анализ параметров

4. 📡 IoT Data Simulation

  • Real-time мониторинг с автообновлением
  • Загрузка CSV данных пользователей
  • Сеть из 5 виртуальных датчиков
  • Исторический анализ IoT данных
  • Техническая информация о системе

5. 🛰️ Satellite Data Demo

  • Aerosol Optical Depth (AOD) анализ
  • Временные ряды спутниковых данных
  • Корреляция наземных и спутниковых измерений
  • API интеграция с NASA LAADS, ESA Copernicus
  • Глобальное сравнение регионов

🔬 Технические детали

Machine Learning

  • Алгоритмы: Random Forest, Linear Regression
  • Признаки: температура, влажность, скорость ветра, время дня, день недели
  • Точность: ~85% (MAE ≈ 8-12 μg/m³)
  • Обновление модели: автоматическое при запуске

Данные

  • Синтетические данные с реалистичными паттернами
  • Суточные циклы загрязнения (пики утром/вечером)
  • Сезонные вариации и случайный шум
  • Нормы ВОЗ для классификации качества воздуха

Визуализация

  • Plotly для интерактивных графиков
  • Folium для картографии
  • Streamlit для веб-интерфейса
  • SHAP для объяснений модели

📊 Нормы качества воздуха (ВОЗ)

Уровень PM2.5 (μg/m³) Цвет Описание
Хорошее ≤ 15 🟢 Безопасно для всех
Умеренное 16-35 🟡 Чувствительные могут ощущать дискомфорт
Вредное 36-75 🟠 Нездоровое для чувствительных групп
Опасное > 75 🔴 Нездоровое для всех

🌍 Демо данные по городам

Город Координаты Базовый PM2.5 Особенности
Алматы 43.24°N, 76.95°E ~35-45 μg/m³ Горная чаша, смог
Нур-Султан 51.17°N, 71.45°E ~25-35 μg/m³ Степной климат
Шымкент 42.30°N, 69.60°E ~30-40 μg/m³ Промышленный центр
Караганда 49.80°N, 73.11°E ~25-35 μg/m³ Горнодобывающий регион
Актобе 50.28°N, 57.21°E ~20-30 μg/m³ Западный регион

🔧 Настройка и кастомизация

Добавление реальных данных

  1. Замените функции в utils/data_generator.py на API вызовы
  2. Подключите реальную базу данных в models/pm25_predictor.py
  3. Настройте аутентификацию для спутниковых API

Интеграция с API

# Пример интеграции с OpenWeatherMap API
import requests

def get_real_weather(city, api_key):
    url = f"http://api.openweathermap.org/data/2.5/air_pollution"
    params = {"lat": lat, "lon": lon, "appid": api_key}
    response = requests.get(url, params=params)
    return response.json()

Деплой в продакшн

  1. Docker: создайте Dockerfile для контейнеризации
  2. Cloud: разверните на Streamlit Cloud, Heroku или AWS
  3. Database: подключите PostgreSQL или InfluxDB
  4. Monitoring: добавьте логирование и мониторинг

📈 Roadmap развития

Phase 1: MVP (Текущий)

  • ✅ Базовый dashboard
  • ✅ ML прогнозирование
  • ✅ Explainable AI
  • ✅ IoT симуляция
  • ✅ Спутниковые данные демо

Phase 2: Integration

  • 🔲 Реальные API (OpenWeatherMap, PurpleAir)
  • 🔲 База данных (PostgreSQL + InfluxDB)
  • 🔲 Аутентификация пользователей
  • 🔲 Email/SMS уведомления

Phase 3: Production

  • 🔲 Микросервисная архитектура
  • 🔲 Kubernetes deployment
  • 🔲 CI/CD pipeline
  • 🔲 Мониторинг и логирование

Phase 4: Advanced Features

  • 🔲 Deep Learning модели (LSTM, CNN)
  • 🔲 Компьютерное зрение для спутниковых снимков
  • 🔲 Mobile приложение
  • 🔲 Public API

🤝 Вклад в проект

Мы приветствуем вклад в развитие проекта!

Как участвовать:

  1. Fork проекта
  2. Создайте feature branch (git checkout -b feature/AmazingFeature)
  3. Commit изменения (git commit -m 'Add some AmazingFeature')
  4. Push в branch (git push origin feature/AmazingFeature)
  5. Создайте Pull Request

Области для улучшения:

  • 📊 Новые типы визуализации
  • 🤖 Улучшение ML моделей
  • 🌍 Интеграция с новыми API
  • 📱 Мобильная версия
  • 🔧 Оптимизация производительности

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. LICENSE файл для деталей.

🔗 Полезные ссылки

API и данные:

Документация:

Нормы качества воздуха:

📧 Контакты

Для вопросов и предложений по проекту:

  • 💼 LinkedIn: [Ваш профиль]
  • 📧 Email: [ваш email]

Этот проект создан в образовательных целях для демонстрации современных подходов к мониторингу качества воздуха с использованием машинного обучения и больших данных.

About

Минимально жизнеспособный продукт (MVP) для мониторинга качества воздуха в Казахстане с использованием машинного обучения, Explainable AI и интеграции со спутниковыми данными.

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors