Skip to content

Проект на SwiftUI: приложение для оценки стоимости квартир в Москве и расчёта ипотеки с использованием Core ML.

Notifications You must be signed in to change notification settings

elinnlle/Mortify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mortify 🏢

ML-ориентированный ипотечный кальтор для рынка недвижимости Москвы

Mortify — iOS-приложение на SwiftUI, которое прогнозирует рыночную стоимость квартиры с использованием Core ML и рассчитывает параметры ипотечного кредита.

Проект объединяет работу с реальными данными, feature engineering, архитектурный подход MVVM и продуманную пользовательскую логику.


Основные возможности

Прогноз стоимости недвижимости

  • Модель Core ML обучена на реальном датасете московской недвижимости (Kaggle).
  • Предсказание выполняется по цене за квадратный метр (PricePerM2) с последующим расчётом итоговой стоимости.
  • Учитываемые параметры:
    • площадь (общая, жилая, кухня),
    • количество комнат,
    • этаж и этажность,
    • тип жилья (новостройка / вторичка),
    • тип ремонта,
    • время до метро,
    • расстояние до центра (рассчитано по станции метро).

Ипотечный калькулятор

  • Расчёт ежемесячного аннуитетного платежа.
  • Расчёт общей переплаты.
  • График зависимости платежа от срока кредита.
  • Динамическое обновление при изменении входных параметров.

Сравнение двух объектов

  • Одновременный расчёт двух вариантов недвижимости.
  • Отображение:
    • стоимости,
    • ежемесячного платежа,
    • переплаты,
    • разницы между вариантами.
  • Бизнес-логика вынесена в сервис без дублирования кода.

История расчётов

  • Сохранение сценариев в UserDefaults.
  • Просмотр, удаление и очистка истории.
  • Хранение параметров и результатов расчёта.

Поддержка регионов

Архитектура предусматривает масштабирование на другие регионы.
В текущей версии реализована Москва.


Видеодемонстрация

2026-02-16.21.05.56.mov

Архитектура

Проект построен с разделением на слои:

Core/
  Models/
  Services/
  Storage/
  Utilities/

Features/
  Home/
  Compare/
  History/
  Components/

Используемые принципы

  • MVVM
  • Изоляция бизнес-логики в сервисах
  • ObservableObject + @Published
  • Дебаунс пересчётов
  • Валидация пользовательского ввода
  • Защита от некорректных значений

Основная логика ML и ипотечного расчёта инкапсулирована в MortgageCalculatorService.


Машинное обучение

Данные

В проекте использованы:

  • Исходный датасет: Moscow Housing Price Dataset
  • Данные о расстоянии станций метро до центра Москвы

В папке Data/:

  • raw/ — оригинальные данные
  • external/ — вспомогательные источники
  • processed/ — итоговый датасет после очистки и feature engineering

Особенности и ограничения данных

В процессе анализа были выявлены структурные особенности:

  • вторичное жильё чаще расположено ближе к центру и имеет более высокую цену за м²;
  • квартиры «без ремонта» во вторичном фонде часто находятся в дорогих районах;
  • новостройки преимущественно представлены в удалённых районах;
  • тип жилья и ремонт сильно коррелируют с локацией.

Это приводило к неинтуитивным предсказаниям (например, вторичка дороже новостройки).
Данные эффекты обусловлены распределением исходного датасета, а не ошибкой модели.


Принятые решения

В проекте реализованы:

  • очистка выбросов по площади и цене,
  • переход к target PricePerM2,
  • расчёт расстояния до центра (distance_to_kremlin_km),
  • создание производных признаков:
    • относительный этаж,
    • первый / последний этаж,
    • категоризация количества комнат,
  • разделение моделей по типу жилья (новостройка / вторичка).

Разделение моделей позволило снизить влияние конфликтующих закономерностей.
Тем не менее часть эффектов остаётся зависеть от качества исходных данных.


Используемые признаки

Категориальные:

  • Apartment type
  • Renovation
  • RoomsCat

Числовые:

  • Area
  • Living area
  • Kitchen area
  • Minutes to metro
  • distance_to_kremlin_km
  • RelativeFloor

Бинарные:

  • IsFirstFloor
  • IsLastFloor

Технологический стек

  • Swift
  • SwiftUI
  • Core ML
  • Create ML
  • UserDefaults
  • MVVM
  • Unit-тестирование

Тестирование

В проекте реализованы unit-тесты:

  • MortgageCalculatorServiceTests
  • ContentViewModelTests
  • CompareViewModelTests

Покрыта логика расчёта стоимости, ипотеки и сравнения.


Возможности развития

  • Добавление других регионов.
  • Интеграция с API объявлений.
  • Онлайн-обновление модели.
  • Расширенная аналитика чувствительности параметров.
  • Поддержка iPad / macOS.

Автор

Работу выполнила Матвеенко Эльвира, студентка 3 курса направления «Программная инженерия».

About

Проект на SwiftUI: приложение для оценки стоимости квартир в Москве и расчёта ипотеки с использованием Core ML.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages