Project Overview
- Описание: Небольшой пайплайн для предсказания цены за м² коммерческой недвижимости на основе координат и площади. Содержит EDA, тренировочный скрипт
train.py, FastAPI-приложениеapi.pyи артефакты вmodels/.
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 8000API 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 --buildReproducibility & Notes
- В проекте есть
requirements.txtиtrain.py— запускpython train.pyвоспроизводит обучение и сохраняет метрики/модель.