Минимально жизнеспособный продукт (MVP) для мониторинга качества воздуха в Казахстане с использованием машинного обучения, Explainable AI и интеграции со спутниковыми данными.
Это демонстрационное приложение показывает возможности современной платформы мониторинга качества воздуха, включающей:
- 📊 Real-time Dashboard - мониторинг текущего состояния качества воздуха
- 🔮 ML Прогнозирование - предсказание PM2.5 на 48 часов вперед
- 🧠 Explainable AI - понимание факторов влияния через SHAP
- 📡 IoT Симуляция - демонстрация сети датчиков
- 🛰️ Спутниковые данные - интеграция с NASA MODIS и ESA Sentinel
- Python 3.8+
- pip
- Streamlit
- Клонируйте или скачайте проект:
cd streamlit_air_quality_mvp- Установите зависимости:
pip install -r requirements.txt- Запустите приложение:
streamlit run main.py- Откройте браузер:
Приложение будет доступно по адресу:
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 # Этот файл
- Интерактивная карта с размещением датчиков
- Текущие показания PM2.5, температуры, влажности, ветра
- Цветовое кодирование по нормам ВОЗ
- Временные графики за последние 24 часа
- Heatmap загрязнения по региону
- Machine Learning модели: Random Forest, Linear Regression
- Горизонт прогноза: до 72 часов
- Доверительные интервалы для предсказаний
- Анализ факторов влияния на качество воздуха
- Риск-анализ и рекомендации
- SHAP анализ для интерпретации модели
- Глобальная важность признаков
- Локальные объяснения для каждого предсказания
- Waterfall графики вкладов факторов
- Корреляционный анализ параметров
- Real-time мониторинг с автообновлением
- Загрузка CSV данных пользователей
- Сеть из 5 виртуальных датчиков
- Исторический анализ IoT данных
- Техническая информация о системе
- Aerosol Optical Depth (AOD) анализ
- Временные ряды спутниковых данных
- Корреляция наземных и спутниковых измерений
- API интеграция с NASA LAADS, ESA Copernicus
- Глобальное сравнение регионов
- Алгоритмы: 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³ | Западный регион |
- Замените функции в
utils/data_generator.pyна API вызовы - Подключите реальную базу данных в
models/pm25_predictor.py - Настройте аутентификацию для спутниковых 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()- Docker: создайте Dockerfile для контейнеризации
- Cloud: разверните на Streamlit Cloud, Heroku или AWS
- Database: подключите PostgreSQL или InfluxDB
- Monitoring: добавьте логирование и мониторинг
- ✅ Базовый dashboard
- ✅ ML прогнозирование
- ✅ Explainable AI
- ✅ IoT симуляция
- ✅ Спутниковые данные демо
- 🔲 Реальные API (OpenWeatherMap, PurpleAir)
- 🔲 База данных (PostgreSQL + InfluxDB)
- 🔲 Аутентификация пользователей
- 🔲 Email/SMS уведомления
- 🔲 Микросервисная архитектура
- 🔲 Kubernetes deployment
- 🔲 CI/CD pipeline
- 🔲 Мониторинг и логирование
- 🔲 Deep Learning модели (LSTM, CNN)
- 🔲 Компьютерное зрение для спутниковых снимков
- 🔲 Mobile приложение
- 🔲 Public API
Мы приветствуем вклад в развитие проекта!
- Fork проекта
- Создайте feature branch (
git checkout -b feature/AmazingFeature) - Commit изменения (
git commit -m 'Add some AmazingFeature') - Push в branch (
git push origin feature/AmazingFeature) - Создайте Pull Request
- 📊 Новые типы визуализации
- 🤖 Улучшение ML моделей
- 🌍 Интеграция с новыми API
- 📱 Мобильная версия
- 🔧 Оптимизация производительности
Этот проект распространяется под лицензией MIT. См. LICENSE файл для деталей.
- OpenWeatherMap Air Pollution API
- NASA LAADS DAAC
- ESA Copernicus Hub
- Google Earth Engine
- PurpleAir API
Для вопросов и предложений по проекту:
- 💼 LinkedIn: [Ваш профиль]
- 📧 Email: [ваш email]
Этот проект создан в образовательных целях для демонстрации современных подходов к мониторингу качества воздуха с использованием машинного обучения и больших данных.