- add_info - дополнительная информация о жилье (смотри prepare_data/parse.py get_building_info)
- assets - скрины для отчёта
- data - хранит заранее полученные файлы: DollarRate.csv, PriceIndex.csv и Inflation.csv, а также туда записываются результаты работы скриптов из prepare_data/
- models - скрипты с моделями и скрипты подбора параметров (да, это разные файлы)
- prepare_data - скрипты для подготовки данных (использовать в данном порядке)
-
- parse.py - нужен для парсинга данных с наш.дом.рф
-
- make_csv.py - первичное представление полученных данных в .csv формате
-
- embeddings.py - добавление embedding'ов (нужно для текстовых и некоторых категориальных признаков в randomforest)
-
- divide_data.py - разделяет данные на train.csv, validation.csv и test.csv и записывает их в data/
-
- analyze.py - нужен был на момент первичного анализа данных
-
- stat.py - статистика и метрики (если нужно)
-
- Самописная линейная регрессия (models/linear_regression.py)
- CatBoostReg с подобранными параметрами (models/catboostreg.py)
- RandomForest с подобранными параметрами (models/randomforest.py)
Файлы best_trials_[имя модели].json содержат результаты подбора параметров с помощью optuna. Долгий перебор занял бы слишком много времени, так что было принято решение использовать эту библиотеку
| Модель | MAPE | RMSE (руб/кв.м) |
|---|---|---|
| LinearRegression | 14.61% | 37588.15 |
| CatBoostReg | 8.75% | 24937 |
| RandomForest | 9.34% | 24616 |
В файле notes.md описаны заметки после каждого этапа работы (4 раздел это заметки за последние 2 недели практики)
Если говорить в общем, то данных мало (очень), из-за чего кажется, что перебор параметров подбирает их под валидационные данные (это только предположение и всё равно результат отличный)
Сами цены на сайте актуальные на данный момент, так приминять данные об изменении цен или курсе валют нельзя (из-за чего какие-нибудь интересные статистики или метрики сделать не получается).
CatBoost любит выбирать себе какую-то киллерфичу и, даже если её удалить, то появится другая (а ещё возрастёт процент ошибок)