Краткая информация о проекте
Рынок жилья — это то, что происходит, когда люди покупают или продают дома либо для проживания, либо в качестве инвестиции. Самым ценным имуществом большинства людей на протяжении всей их жизни является их дом.
Стоимость дома может варьироваться в зависимости от ряда переменных. Некоторые из наиболее важных элементов, влияющих на стоимость дома, перечислены ниже.
1. Местоположение
Местоположение дома имеет решающее значение и влияет на его стоимость. На стоимость жилья влияют три основных географических фактора. К ним относятся уровень близлежащих школ, перспективы трудоустройства и доступность мест отдыха, развлечений и торговли.
2. Соседство
Стоимость дома определяется ценами продажи недавно закрытых сопоставимых домов в район.
3. Размер дома, комната и холл
Размер является важным фактором, так как дом большего размера может увеличить его стоимость. Для покупателей жилая площадь также имеет решающее значение. Наиболее ценными комнатами в доме часто являются спальни и ванные комнаты, поэтому, чем больше каждой из них, тем ценнее дом.
Для метода оценки стоимости дома, который я буду обсуждать здесь, я использовал язык программирования Python. Вы можете прочитать более подробную информацию в моих статьях и блоках кода ниже.
Инструменты
Во время работы над проектом я использовал много инструментов, некоторые из них помогли мне собрать данные из Интернета, выполнить статистические операции, визуализировать их, а некоторые помогли мне обучить мой алгоритм и делать прогнозы. Инструменты, которые я использовал, показаны ниже.
Удаление веб-сайтов
«Веб-скрапинг — это процесс сбора структурированных веб-данных в автоматическом режиме. Это также известно как извлечение веб-данных. Некоторые из основных вариантов использования веб-скрапинга включают мониторинг цен, анализ цен, мониторинг новостей, генерацию потенциальных клиентов и исследования рынка среди многих других. Как правило, извлечение веб-данных используется людьми и предприятиями, которые хотят использовать общедоступные веб-данные для принятия более взвешенных решений».
— Колм Кенни, 2022 г.
О сайте, соскребшем данные
Для цен на жилье был выбран город Стамбул, и посмотрите объявления на сайте, где будут собираться данные, первая информация, которая попадется, это название объявления, район, город, количество комнат и площадь дома. Нам достаточно этой информации для обучения нашей модели машинного обучения. Чтобы получить эти данные с веб-страницы, использовалась библиотека BeautifulSoup.
Давайте код!
Напишите простую функцию для регулярного поиска html-кодов с информацией о доме на сайте и запускайте этот код на всех страницах объявлений.
Чтобы получить информацию со всех страниц и автоматизировать этот процесс, нам нужно перейти на последнюю страницу и получить всю домашнюю информацию. Напишите простую формулу, чтобы получить информацию о последней странице из html-кода, и независимо от того, какое соседство мы выберем, она покажет последние страницы рекламы в этом соседстве.
На предпоследнем шаге извлеките данные с веб-сайта, воспользовавшись функцией последней страницы, чтобы создать список ссылок и создать наш список ссылок.
В качестве последнего шага, после извлечения наших данных с помощью функций beatifulsoup и выше, мы создаем 5 списков с именами TITLE, PRICE, LOCATION, AREA и ROOM для перечисления наших данных. Мы конвертируем эти списки в фреймы данных и создаем наш набор данных в виде CSV-файла.
Создал набор данных с кодами, которые мы написали выше, и это наш первый взгляд на CSV-файл.
Машинное обучение
Что такое машинное обучение?
Машинное обучение — это отрасль искусственного интеллекта (ИИ) и компьютерных наук, которая фокусируется на использовании данных и алгоритмов для имитации того, как люди учатся, постепенно повышая его точность.
- ИБМ
Обзор нашего набора данных и введение в машинное обучение
Набор данных, который мы создали с помощью вышеупомянутого метода x, считывается, и у нас есть обзор того, какие данные у нас есть.
Для машинного обучения необходимо внести некоторые улучшения в набор данных. Во-первых, мы удаляем столбец «Безымянный: 0». Используя знания сектора, было решено, что доменная информация о доме является важной функцией машинного обучения, и удаление «m2» в строках и преобразование строковых данных в целое число для разработки лучшего алгоритма машинного обучения. Разделение данных района и соседства в столбце «МЕСТОПОЛОЖЕНИЕ» на два разных столбца, так как позже мы поместим их в машинное обучение как фиктивные переменные. Наконец, строковые данные, показывающие количество комнат и залов в столбце «ROOM» и с оператором «+» в середине, записываются в dataFrame как целое число в двух разных столбцах: «ROOM» и «HALL».
Среди данных, которые мы собрали из Интернета с помощью метода BeautifulSoup, есть реклама домов с точки зрения как количества комнат и залов, так и площади дома по сравнению с другими домами. поэтому, чтобы сделать машинное обучение лучше, необходимо найти дома с этими характеристиками и удалить их из нашего набора данных. При выполнении этой очистки кажется, что цены на дома с этими характеристиками высоки, поэтому цены на дома в наборе данных отфильтрованы ниже 30 000 000 турецких лир. Тем не менее, диапазон цен на жилье слишком велик, мы создаем новый столбец и логарифмируем цены на жилье. Наконец, учитывая особенности нашего набора данных, он кажется очень подходящим для машинного обучения.
Нормальный и логарифмический графики цен на жилье.
Прежде чем перейти к машинному обучению с помощью scikitlearn, statsmodel используется для статистической аппроксимации набора данных. Фреймы данных X и y создаются для обучения статистической модели. Некоторые важные значения проверяются в statsmodel. Эти ключевые значения R-квадрат, прил. R-квадрат, P›|t| и Cond. Нет. Необходимо учитывать нижние примечания из статистической модели OLS.
Пример фиктивной переменной
Машинное обучение с помощью Scikitlearn
Во-первых, наши наборы данных, которые не содержат строковых заголовков, делятся на обучающие, проверочные и тестовые. Обычно эти 3 набора данных разбиваются на 60%, 20% и 20% соответственно. Для этого берется помощь от train_test_split, которая является библиотекой Scikitlearn.
Определены 3 разные регрессионные модели для использования в наборе данных для обучения, проверки и тестирования.
После обучения набора данных набор данных проверки 20% помещается в 3 разные модели регрессии, чтобы увидеть, какая регрессия успешна. Результаты показывают, что линейная регрессия и гребневая регрессия более успешны, чем полиномиальная регрессия.
После выбора модели, которую будем использовать, мы получаем результаты обучения тестового набора данных с этой моделью. В результате наша модель кажется успешной.
Заключение и рекомендации
Когда я начинал этот проект, я думал, что будет легко собирать данные из Интернета, но это не так. В результате многих тестов, ошибок и исследований я смог правильно и правильно извлечь данные из Интернета. После извлечения данных из Интернета я подумал, что трудная часть проекта позади, но манипулирование набором данных, создание моделей и алгоритмов заняло больше времени, чем я думал. В результате набор данных был сделан должным образом обученным. У меня было много ошибок и потраченного времени при выполнении этого проекта, но я извлек из них уроки и учту их в будущих проектах. Была создана модель с ценами на жилье в Стамбуле и сделана оценка цен на жилье, надеюсь, вам понравилась моя статья и наглядные пояснения.
Для получения более подробной информации, отзывов и вопросов по проекту вы можете связаться со мной через почту и аккаунт LinkedIn. Вы можете посетить мой github, чтобы получить доступ к кодам. Спасибо за ваше время.
С наилучшими пожеланиями.