No description
  • Jupyter Notebook 94.2%
  • Python 4.9%
  • Dockerfile 0.9%
Find a file
2025-11-23 15:51:28 +03:00
models Update binary model files: kmeans.pkl and model.cbm 2025-11-23 15:40:02 +03:00
.dockerignore Initial commit 2025-11-23 01:00:45 +03:00
.gitignore Initial commit 2025-11-23 01:00:45 +03:00
.gitlab-ci.yml uuuh idk pipeline 2025-11-23 01:50:57 +03:00
api.py Add logging and error handling to prediction endpoint 2025-11-23 15:47:50 +03:00
docker-compose.yml change service port to 80 2025-11-23 02:37:49 +03:00
Dockerfile Initial commit 2025-11-23 01:00:45 +03:00
EDA.ipynb Add EDA 2025-11-23 15:40:13 +03:00
model.py Initial commit 2025-11-23 01:00:45 +03:00
README.md Update README to include dataset check and remove recommendations section 2025-11-23 15:51:28 +03:00
requirements.txt Initial commit 2025-11-23 01:00:45 +03:00
train.py Implement training script with data preprocessing, model training, and saving functionality 2025-11-23 15:48:01 +03:00

Project Overview

  • Описание: Небольшой пайплайн для предсказания цены за м² коммерческой недвижимости на основе координат и площади. Содержит EDA, тренировочный скрипт train.py, FastAPI-приложение api.py и артефакты в models/.

Перед работой проверьте загружен ли датасет cian_data.jsonlines в корне проекта.

Requirements

  • Python: 3.11 (рекомендуется)
  • Dependencies: перечислены в requirements.txt (уже добавлены версии).

Quick Start (local)

  • Создать и активировать виртуальное окружение:
python -m venv .venv
source .venv/bin/activate
  • Установить зависимости:
pip install -r requirements.txt
  • Обучить модель и сохранить артефакты:
python train.py
  • Запустить API локально:
uvicorn api:app --host 0.0.0.0 --port 8000

API Usage

  • Эндпоинт для предсказаний: POST /predict
  • Формат запроса: список объектов с полями latitude, longitude, total_area.
  • Пример curl:
curl -X POST "http://127.0.0.1:8000/predict" \
	-H "Content-Type: application/json" \
	-d '[{"latitude":55.75, "longitude":37.61, "total_area":45.0}]'
  • Ответ: JSON вида { "predictions": [<value>, ...] }.

Models / Artifacts

  • Основные артефакты сохраняются в models/:
    • models/model.cbm — CatBoost модель
    • models/kmeans.pkl — кластеризатор координат
    • models/meta.json — список/порядок признаков
  • Обновление модели: запустите python train.py — это перезапишет файлы в models/.

Docker (quick)

  • Собрать образ и запустить контейнер:
docker build -t test_ml_image:latest .
docker run --rm -p 8000:8000 test_ml_image:latest
  • Или через docker-compose (задать IMAGE_NAME):
IMAGE_NAME=test_ml_image:latest docker-compose up --build

Reproducibility & Notes

  • В проекте есть requirements.txt и train.py — запуск python train.py воспроизводит обучение и сохраняет метрики/модель.