# Структура проекта
- `real_estate_model/` содержит весь основной код пакета: `train.py`, `predict.py`, `config.py` (загрузка параметров обучения и предсказания из файла `config.yml`). Здесь же находится директория `trained_models/`, куда при обучении будут попадать веса новых моделей, и в которой уже есть одна обученная модель.
- `requirements/` содержит все необходимые зависимости для использования (`requirements.txt`) и тестирования (`test_requirements.txt`) пакета.
- `tests/` содержит код тестов, запускаемый при помощи pytest.
- `webapp/` содержит код веб-интерфейса.
`predict.py` имеет функционал для загрузки состояния модели из конфига (`load_model`), предсказания с помощью предзагруженной модели (`predict_raw`) и предсказания моделью, автоматически загружаемой из файла, прописанном в конфиге (`predict`).
`config.py` имеет функции `fetch_config_from_yaml` для полного считывания параметров конфига и `set_config_field` для изменения значения конкретного параметра (не поддерживает списки).
# Установка
Пакет опубликован на [PyPI](https://pypi.org/project/RealEstate-package/) и устанавливается командой:
```
pip install RealEstate-package
```
# Использование
Код запускается и тестируется при помощи tox. Параметры обучения и предсказания находятся в `real_estate_model/config.yml`.
## Обучение
Перед началом обучения:
- НЕОБХОДИМО скачать [датасет](https://www.kaggle.com/datasets/mrdaniilak/russia-real-estate-20182021) и прописать абсолютный путь к csv-файлу в конфиге в поле `dataset` (можно сделать это программно с помощью функции `config.set_config_field`);
- ОПЦИОНАЛЬНО настроить другие параметры обучения:
+ `trained_model_path`: относительный путь сохранения обученных моделей, по умолчанию `./trained_models/` (имя генерируется с помощью timestamp);
+ `variables_to_drop`: список переменных, не учитываемых при обучении (проект рассчитан на предсказание стоимости недвижимости, поэтому она игнорируется автоматически);
+ `random_state`;
+ `test_size`: доля тестовой выборки для функции `train_test_split`;
+ `num_boost_round`: внутренний параметр модели, отвечающий за количество раундов (итераций);
+ `early_stopping_rounds`: внутренний параметр модели, отвечающий за раннюю остановку обучения, если качество не улучшалось в течение указанного количества раундов;
+ `verbose_eval`: внутренний параметр модели, отвечающий за частоту вывода информации об обучении (в количестве раундов);
+ `metric`: внутренний параметр модели функции оценки качества, по умолчанию `rmse`, прочие метрики доступны по [ссылке](https://lightgbm.readthedocs.io/en/latest/Parameters.html#metric).
Обучение запускается из корневой директории проекта командой:
```
tox -e train
```
## Предсказание
Для предсказания в конфиге указывается путь к весам обученной модели (по умолчанию `trained_models/lgb_model.txt`) в поле `predict_model` и список переменных, на которых она обучалась (`predictors`).
```
tox -e predict
```
# Веб-приложение
Основной функционал доступен в веб-приложении, которое запускается командой:
```
tox -e webapp
```
Предоставляется возможность:
- предсказать значение стоимости недвижимости по некоторым параметрам во вкладке `/predict`;
- обучить новую модель во вкладке `/train` (параметры обучения будут взяты из конфига). По окончании обучения будет выведена информация об абсолютном и относительном путях сохранённой модели и о её качестве на train- и test-выборках (R2-score).
- изменить модель для предсказания в `/change_model`, передав относительный путь к файлу с весами на вход.
# Датасет
Для обучения существующей модели использовался датасет:
https://www.kaggle.com/datasets/mrdaniilak/russia-real-estate-20182021
Raw data
{
"_id": null,
"home_page": "https://github.com/Lada-Rom/RealEstate_package",
"name": "RealEstate-package",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "lightgbm python real_estate price",
"author": "\u041a\u043b\u0435\u0439\u043c\u0435\u043d\u043e\u0432 \u0410., \u0422\u043e\u043b\u0441\u0442\u0435\u043d\u043a\u043e \u041b.",
"author_email": "notmy@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/3d/b6/a01feb28ed3defb3bb6dd90a169724b55334d58439d564146936ba13a773/RealEstate_package-1.5.0.tar.gz",
"platform": null,
"description": "# \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n\n- `real_estate_model/` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0435\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u043f\u0430\u043a\u0435\u0442\u0430: `train.py`, `predict.py`, `config.py` (\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 `config.yml`). \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f `trained_models/`, \u043a\u0443\u0434\u0430 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u0432\u0435\u0441\u0430 \u043d\u043e\u0432\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.\n- `requirements/` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (`requirements.txt`) \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (`test_requirements.txt`) \u043f\u0430\u043a\u0435\u0442\u0430.\n- `tests/` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 pytest.\n- `webapp/` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.\n\n`predict.py` \u0438\u043c\u0435\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 (`load_model`), \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 (`predict_raw`) \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0439 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 (`predict`).\n\n`config.py` \u0438\u043c\u0435\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 `fetch_config_from_yaml` \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0438 `set_config_field` \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043a\u0438).\n\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n\u041f\u0430\u043a\u0435\u0442 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043d\u0430 [PyPI](https://pypi.org/project/RealEstate-package/) \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:\n\n```\npip install RealEstate-package\n```\n\n\n# \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\n\n\u041a\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 tox. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 `real_estate_model/config.yml`.\n\n\n## \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\n\n\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f:\n\n- \u041d\u0415\u041e\u0411\u0425\u041e\u0414\u0418\u041c\u041e \u0441\u043a\u0430\u0447\u0430\u0442\u044c [\u0434\u0430\u0442\u0430\u0441\u0435\u0442](https://www.kaggle.com/datasets/mrdaniilak/russia-real-estate-20182021) \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a csv-\u0444\u0430\u0439\u043b\u0443 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0432 \u043f\u043e\u043b\u0435 `dataset` (\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 `config.set_config_field`);\n- \u041e\u041f\u0426\u0418\u041e\u041d\u0410\u041b\u042c\u041d\u041e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f:\n + `trained_model_path`: \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e `./trained_models/` (\u0438\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e timestamp);\n + `variables_to_drop`: \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 (\u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438);\n + `random_state`;\n + `test_size`: \u0434\u043e\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 `train_test_split`;\n + `num_boost_round`: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0443\u043d\u0434\u043e\u0432 (\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439);\n + `early_stopping_rounds`: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u0440\u0430\u043d\u043d\u044e\u044e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u0443\u043b\u0443\u0447\u0448\u0430\u043b\u043e\u0441\u044c \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0443\u043d\u0434\u043e\u0432;\n + `verbose_eval`: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 (\u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0443\u043d\u0434\u043e\u0432);\n + `metric`: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e `rmse`, \u043f\u0440\u043e\u0447\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e [\u0441\u0441\u044b\u043b\u043a\u0435](https://lightgbm.readthedocs.io/en/latest/Parameters.html#metric).\n\n\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:\n\n```\ntox -e train\n```\n\n\n## \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435\n\n\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u044c \u043a \u0432\u0435\u0441\u0430\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e `trained_models/lgb_model.txt`) \u0432 \u043f\u043e\u043b\u0435 `predict_model` \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0430 \u043e\u0431\u0443\u0447\u0430\u043b\u0430\u0441\u044c (`predictors`).\n\n```\ntox -e predict\n```\n\n\n# \u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\n\n\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:\n\n```\ntox -e webapp\n```\n\n\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c:\n- \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 `/predict`;\n- \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 `/train` (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430). \u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c \u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0443\u0442\u044f\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043e \u0435\u0451 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0430 train- \u0438 test-\u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445 (R2-score).\n- \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 `/change_model`, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0441 \u0432\u0435\u0441\u0430\u043c\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434.\n\n\n# \u0414\u0430\u0442\u0430\u0441\u0435\u0442\n\n\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442:\nhttps://www.kaggle.com/datasets/mrdaniilak/russia-real-estate-20182021\n\n\n",
"bugtrack_url": null,
"license": "BSD-3",
"summary": "\u041c\u041b-\u043c\u043e\u0434\u0435\u043b\u044c, \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e \u0435\u0451 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c.",
"version": "1.5.0",
"project_urls": {
"Documentation": "https://github.com/Lada-Rom/RealEstate_package",
"Homepage": "https://github.com/Lada-Rom/RealEstate_package"
},
"split_keywords": [
"lightgbm",
"python",
"real_estate",
"price"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "fc54eeb9b52e06af0f1ed00b37c1e8d833f060ee5f3650725fd3cd2e891a4dc6",
"md5": "ae1cb193f4beb8d20434c191d103d5c2",
"sha256": "9237afa4199339e7c9e2ee2cdbba46f07703219d54c9f47d79dd0d86122bdc38"
},
"downloads": -1,
"filename": "RealEstate_package-1.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ae1cb193f4beb8d20434c191d103d5c2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 4920128,
"upload_time": "2023-05-25T14:31:27",
"upload_time_iso_8601": "2023-05-25T14:31:27.946782Z",
"url": "https://files.pythonhosted.org/packages/fc/54/eeb9b52e06af0f1ed00b37c1e8d833f060ee5f3650725fd3cd2e891a4dc6/RealEstate_package-1.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3db6a01feb28ed3defb3bb6dd90a169724b55334d58439d564146936ba13a773",
"md5": "88f4156e83f512c7fbf97e96c836c381",
"sha256": "a04a1d72181a75b41d665939f87e601f6e741323ea5ea388a4f26c858e54c55c"
},
"downloads": -1,
"filename": "RealEstate_package-1.5.0.tar.gz",
"has_sig": false,
"md5_digest": "88f4156e83f512c7fbf97e96c836c381",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 4892224,
"upload_time": "2023-05-25T14:31:33",
"upload_time_iso_8601": "2023-05-25T14:31:33.114361Z",
"url": "https://files.pythonhosted.org/packages/3d/b6/a01feb28ed3defb3bb6dd90a169724b55334d58439d564146936ba13a773/RealEstate_package-1.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-25 14:31:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Lada-Rom",
"github_project": "RealEstate_package",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "realestate-package"
}