Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ML система для предсказания победителя в CS2 матчах на Faceit с точностью 94% на основе K/D ratio, Elo рейтинга и статистики команд.,

Notifications You must be signed in to change notification settings

w0drs/CS2-Predict

Repository files navigation

CS2 Faceit Match Winner Prediction

Полноценная система для предсказания победителей в CS2 матчах (Faceat) с REST API и веб-интерфейсом.

🎯 О проекте

Проект предсказывает вероятность победы команды на основе:

  • Среднего K/D ratio команд
  • Среднего Elo рейтинга
  • Среднего процента побед

🌟 Возможности

  • REST API на FastAPI
  • Веб-интерфейс на Streamlit
  • Логистическая регрессия для предсказания побед

📊 Данные

Датасет был взят со следующего источника: Counter Strike 2 Win Prediction (FACEIT)
Обрабатывал данные через библиотеку pandas.
Что было сделано:

  • Замена запятой на точку в некоторых числовых колонках (т.к pandas ожидает в float числах точку)
  • Убрал объекты, в которых значение в колонке map не подходило для рейтинговых faceat игр (например: aim_map, awp_india, dorf...)
  • Использовал standard scaler для нормализации данных

⚙️ Метрики

Тестировал как линейные модели, так и ансамбли. Но в итоге выбрал логистическую регрессию за хорошие результаты и интерпретируемость.
Главной метрикой стала precision, т.к нам нужно быть уверенным в победе первой команды, а не "найти" все победы первой команды как с recall.
В итоге ML модель достигает:

  • Precision: 0.91
  • Recall: 0.43
  • F1-Score: 0.58
  • Accuracy: 0.71

🖼️ Демонстрация

Главный экран Прогноз

🏗️ Структура проекта

Cs2_predict/
├── api/ # FastAPI микросервис
│ ├── data.py # класс данных для FastAPI приложения
│ └── service.py # FastAPI приложение
├── app/ # Streamlit фронтенд
│ └── app.py # Основное приложение
├── configs/ 
| └── model_v1.yaml # Конфигурационный файл с параметрами модели и путем до нее
├── images/ 
├── ml_core/ # Ядро ML
│ ├── constants/ # Константные значения
│ │ └── constants.py 
│ ├── src/ # Модули для озагрузки датасета и обучения модели
│ │ ├── dataset/
│ │ │ └── make_dataset.py # Загрузка датасета из файла и преобразование данных из него
│ │ ├── model/
│ │ │ ├── evaluate.py # Проверка качества модели
│ │ │ ├── loader.py # Модуль для загрузки модели и скейлера
│ │ │ ├── predict.py # Модуль для предсказаний модели
│ │ │ └── train_model.py # Модуль обучения модели
│ │ └── utils/
│ │ ├── exceptions.py # Исключения для отладки кода
│ │ └── time.py # Модуль работы с временем 
│ └── tests/ # Тесты
│ └── unit_tests/ 
│ ├── test_dataset.py 
| ├── test_params_loader.py 
│ └── test_loader.py 
├── notebooks/ # Код в jupiter notebook (файл с EDA и файл с обучением модели)
│ ├── 1.EDA.ipynb
│ ├── 2.ML.ipynb
│ └── Neural Network testing.ipynb
├── scaler/ # .pkl файлы со скейлерами (StandardScaler)
├── trained_models/ # .pkl файлы с обученной моделью
├── train.py # Обучение модели
├── Dockerfile # Файл для докер образа
├── pytest.ini
└── README.md

Локальный запуск

# API сервер
uvicorn api.service:app --reload --port 8000
# Frontend
streamlit run app/app.py

Запуск Api сервера через docker:

# Создание докер образа
docker build -t cs2-ml-api .
# Запуск контейнера
docker run -p 8000:8000 cs2-ml-api

🖥️ Веб-интерфейс

Streamlit приложение доступно по адресу: http://localhost:8501

About

ML система для предсказания победителя в CS2 матчах на Faceit с точностью 94% на основе K/D ratio, Elo рейтинга и статистики команд.,

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /