Веб-приложение на Flask для выбора муниципального района и земельного участка с расчетом:
- индекса инвестиционной привлекательности по шкале 0–100;
- рекомендуемой ставки аренды, руб./га;
- уровня привлекательности и ключевых факторов участка.
Проект подготовлен как учебный MVP для курсовой работы по дисциплине «Программная инженерия».
- Python 3.11
- Flask
- CatBoostRegressor
- pandas / scikit-learn
- HTML + Jinja2 + CSS
- CSV как простой источник данных
land_valuation_app/
├── app.py
├── wsgi.py
├── requirements.txt
├── render.yaml
├── Procfile
├── data/
│ └── lands.csv
├── models/
│ ├── catboost_model.cbm
│ ├── metadata.json
│ └── metrics.json
├── src/
│ ├── data_loader.py
│ ├── features.py
│ ├── model_service.py
│ └── train_model.py
├── templates/
├── static/
└── tests/
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python app.pyОткрыть в браузере:
http://127.0.0.1:5000
Модель уже обучена и сохранена в models/catboost_model.cbm.
При изменении данных можно заново обучить модель:
python src/train_model.pyСкрипт обновит:
data/lands.csv— добавит расчетные поляinvestment_indexиtarget_rent;models/catboost_model.cbm;models/metadata.json;models/metrics.json.
python -m pytest testsЕсли pytest не установлен, можно проверить вручную:
python app.pyи открыть /health.
Исходный Excel-файл был преобразован в единый lands.csv.
Если в исходных листах расстояния были записаны в метрах, а заголовок указывал километры, значения больше 500 автоматически переводятся в километры. Это правило сохранено в src/features.py.