Skip to content

veronikavinnichenko/Real-Estate-Agent

Repository files navigation

REAL ESTATE AGENT APP

Typing SVG

Личный риелтор – сервис, формирующий цену, по которой пользователь может выгодно продать свою квартиру, не прибегая к услугам агента по продаже жилья. На вход принимает характеристики квартиры, а выдает предсказанную стоимость и карту с квартирами, имеющими похожие параметры. Таким образом, пользователь экономит на оценщике.

В разработке продукта принимали участие: Антон Алексеев, Вероника Винниченко, Валерия Винниченко, Дмитрий Жучков.

Ссылка на сервис:

https://data8group.shinyapps.io/best_app/

🔧 Технологии

  • R
  • Python
  • Shiny

📂 Структура проекта

└── data_parser.ipynb
├── data
   └── data_final.xlsx
   ├── partions of data
      ├── part1
      ├── part2
      ├── part3
      ├── part4
      └── part5
├── model
      └── models.R
└── app
      ├── server.R
      └── ui.R
Feature Description
📄 data_parser Файл для парсинга данных с сайта cian.ru
📔 data Директория, содержащая как исходные (partitions of data), так и предобработанные данные (data_final) с харакетристками квартир
📔 model Директория, содержащая модель машинного обучения
📔 app Директория, содержащая файлы с кодом интервеса и серверной части приложения

💽 Входные данные для работы сервиса

  • Количество комнат
  • Общая площадь
  • Жилая площадь
  • Площадь кухни
  • Тип ремонта квартиры
  • Наличие балкона
  • Вид санузла (совмещенный/раздельный)
  • Количество санузлов
  • Этаж
  • Год постройки дома
  • Тип дома
  • Наличие лифта
  • Район расположения
  • Ближайшая станция метро
  • Расстояние до метро пешком (мин)

Выходные данные:

  • 💵 Предсказанный интервал цены
  • 🗺️ Карта с рекомендацией квартир со схожими храктеристиками

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

  1. Применение обучения с “учителем” для обучения таких алгоритмов ML, как линейная регрессия, RIDGE-регрессия, LASSO-регрессия, случайный лес
  2. Оформление: ансамбль
  3. Структура ансамбля: итоговое предсказание является суммой взвешенных предсказания отдельно работающих моделей
  4. Входные данные для обучения моделей: square, room, kitchen_square, living_square, year, toilet_quantity, type_toilet, if_lift, if_balcony

🔝 Рекомендательная система

  1. Тип: content-based
  2. Вход: 15 характерисик квартир
  3. Вывод: 5 наиболее похожих квартир
  4. Формат вывода: карта г. Санкт-Петербурга с похожими квартирами и их характеристикмми
output$mymap = renderLeaflet({
    vector1 = c(1, 0)
    vector2 = c("есть", "нет")
    
    recommend = recommend()
    M = leaflet(recommend) %>% setView(lng = 30.3141, lat = 59.9386, zoom = 10)
    M %>% addTiles() %>%
      addMarkers(~dolgota, ~shirota, popup = paste("<br>Адрес:", recommend$addr,
                                                   "<br>Район:", recommend$district,
                                                   "<br>Цена:", paste0(formatC(as.numeric(recommend$price), format="f", digits=0, big.mark="'"), ""),
                                                   "<br>Кол-во комнат:", recommend$rooms,
                                                   "<br>Площадь (кв.м):", recommend$square,
                                                   "<br>Жилая площадь (кв.м):", recommend$living_square,
                                                   "<br>Площадь кухни (кв.м):", recommend$kitchen_square,
                                                   "<br>Этаж:", recommend$floor,
                                                   "<br>Год постройки:", recommend$year,
                                                   "<br>Тип дома:", recommend$housetype,
                                                   "<br>Балкон:", recommend$if_balcony,
                                                   "<br>Наличие лифта:", recommend$if_lift,
                                                   "<br>Кол-во санузлов:", recommend$toilet_quantity,
                                                   "<br>Тип туалета:", recommend$type_toilet,
                                                   "<br>Ремонт:", recommend$remont,
                                                   "<br>Станция метро:", recommend$subway_TRUE,
                                                   "<br>Пешком до метро (мин):", recommend$subway_dist_peshkom_TRUE),
                 label = paste0(formatC(as.numeric(recommend$price), format="f", digits=0, big.mark="'"), ""))
  })

👩‍💻 Пример использования интерфейса

Карта с похожими квартирами

IMG_8667

Предсказанная цена

IMG_8668