Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

team10project

Общие сведения

Данный проект является университетским заданием команды Team10. Цель проекта - создание модели машинного обучения (ML) для прогнозирования индекса качества воздуха (ИКВ, AQI) и чат-бота для Telegram Messenger.

Итог проделанной работы


1. Сбор и подготовка данных

  • Данные были собраны из нескольких источников, включая:
    • Метеостанции для погодных показателей.
    • Станции мониторинга воздуха для значений PM2.5, PM10, NO2, CO и O3.
    • Дополнительные координаты и кластеризация станций.
  • Объединенные данные были очищены и обработаны, чтобы устранить дубликаты и выбросы.
  • Разделение на обучающую (train) и тестовую (test) выборки для обучения модели.

2. Выбор целевой переменной и признаков

  • Целевая переменная: AQI (индекс качества воздуха).
  • Основные признаки:
    temp_mean, wdir_mean, wspd_mean, pm10, log_pm25.
    • Признак log_pm25 был создан из pm25 для борьбы с переобучением и сильной корреляцией.

3. Обучение модели и подбор гиперпараметров

  • Использована модель RandomForestRegressor для предсказания AQI.
  • Гиперпараметры были оптимизированы с помощью GridSearchCV:
    • Количество деревьев (n_estimators).
    • Глубина деревьев (max_depth).
    • Минимальное количество образцов для разбиения и листа (min_samples_split, min_samples_leaf).

Результат:
Получены оптимальные параметры модели, что улучшило точность предсказаний.


4. Отбор признаков

  • Применен RFE (Recursive Feature Elimination) для выбора 5 лучших признаков.
  • Важнейшие признаки:
    • log_pm25 и pm10.
    • Второстепенные: temp_mean, wspd_mean, wdir_mean.

5. Создание функционала для пользователя

  1. Прогноз на основе координат пользователя:

    • Координаты пользователя позволяют найти ближайшую станцию.
    • Признаки для предсказания AQI формируются на основе данных этой станции.
  2. Прогноз на 7 дней вперед:

    • Логика включает динамическое добавление изменений в признаки (для учета сезонности и погодных колебаний).
    • Модель предсказывает AQI для каждого из 7 дней.

6. Оценка качества модели

  • Метрика: RMSE (Root Mean Squared Error).
  • Результаты предсказаний визуализированы:
    • Scatter plot: сравнение реальных и предсказанных значений AQI.
    • Линейные графики: сравнение динамики реальных и предсказанных данных AQI.
  • Важность признаков была оценена и визуализирована.

7. Реализация интерфейса для пользователей

  • Telegram-бот был разработан как интерфейс для конечного пользователя:
    • Пользователь отправляет свои координаты в боте.
    • Бот возвращает прогноз AQI на 7 дней вперед.

Итог:

  • Собраны и подготовлены данные из нескольких источников.
  • Создана стабильная и оптимизированная модель для предсказания AQI.
  • Разработан функционал для предсказания на основе координат пользователя.
  • Визуализированы результаты и определены важнейшие признаки.
  • Реализован Telegram-бот как удобный интерфейс для пользователей.

Технологии

  • Язык программирования: Python

  • Используемые библиотеки:

    • joblib

    • pandas

    • numpy

    • sklearn

    • geopy


Структура

team10project/
│
├── data/                     # Данные для обучения и обработки
│   ├── extracted/            # Извлеченные данные
│   │   ├── df1_with_clusters.csv
│   │   ├── merged_by_date_full.csv
│   │   └── merged_by_date.csv
│   │
│   ├── processed/            # Обработанные данные
│   │   ├── cleaned_air_data_with_aqi.csv
│   │   ├── cleaned_weather_data.csv
│   │   ├── data_cleaned.csv
│   │   ├── merged_data copy.csv
│   │   ├── merged_data.csv
│   │   ├── test_data.csv
│   │   └── train_data.csv
│   │
│   └── raw/                  # Исходные данные
│       ├── air_data_with_aqi_and_coor.csv
│       ├── air_quality_with_aqi.csv
│       ├── cat1_moscow_objects.csv
│       └── moscow_weather_full.csv
│
├── model/                    # Обученная модель
│   └── new_aqi_model.pkl
│
├── notebooks/                # Jupyter Notebook файлы
│   ├── aqi_forecast.ipynb
│   ├── data_engineering.ipynb
│   ├── model_and_data_eng.ipynb
│   └── new_model_data_eng.ipynb
│
├── .gitignore                # Файл для исключения из Git
├── LICENSE                   # Лицензионное соглашение
└── README.md                 # Описание проекта

Как пользоваться

  1. Напишите нашему Telegram чат-боту:
    👉 @AQI_predicotr_bot

  2. Отправьте ваше геолокационное местоположение через Telegram.

  3. Получите прогноз:
    📊 В ответ вы получите прогноз ИКВ на 7 дней, если ваше местонахождение находится в Москве.


Участники проекта


Лицензия

Данный проект распространяется на условиях лицензии MIT.
📄 Подробности отражены в файле LICENSE.


Разработано командой Team10 ✨

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages