1. Введение: бизнес-задача
Как житель района Большого Торонто (GTA) более 10 лет, я хотел бы выбрать данные GTA в качестве основного проекта прикладной науки о данных. Основная идея заключается в использовании данных о местах проведения и рейтинге школ для прогнозирования цены на жилье. Кроме того, обратите внимание на некоторые взаимосвязи или схемы между различными факторами.
Торонто — крупнейший город Канады, однако, по сравнению с этими крупнейшими городами мира, у нас в нем проживает всего 6 миллионов человек, большая часть которых живет и работает в южной части. Плотность населения и разнообразие — это наши уникальные особенности, поэтому некоторые параметры в нашем проекте необходимо настраивать.
Когда у нас есть все данные и модели, мы можем создать несколько графиков визуализации, чтобы проверить эти шаблоны и сравнить производительность разных моделей. Мы также можем создать карту, чтобы отобразить, что каждый район сгруппирован в соответствии с такими функциями, как рейтинг школ и плотность мест проведения.
2. Данные
Сначала у меня ушло несколько часов на то, чтобы построить быстрый черновой вариант модели: используя только данные, которые я собрал с какого-то веб-сайта риелтора, используя метод парсинга, а затем использовал API Foursquare для объединения каждой записи о доме с данными о местах проведения. Однако точность исполнения выглядит не очень.
Самая большая проблема заключается в том, что в отличие от США, здесь, в Канаде, вся информация о цене продажи и большая часть важной подробной информации, такой как год постройки, площадь земли, размер земли, налог на недвижимость, закрыты для общественности. , поэтому нет хорошего решения для получения всех необходимых мне данных через открытый исходный код.
Итак, следующий шаг — попытаться найти другие связанные факторы, которые могут повлиять на цену жилья. Для этого я просмотрела другие веб-сайты, в том числе официальный рейтинг школ за 2017–2018 годы, предоставленный Институтом Фрейзера, поскольку, как и многие другие родители, рейтинг школы - одна из самых больших проблем, когда мы купили собственный дом. Кроме того, я выбрал веб-сайт со списком приблизительных размеров и типов для каждого объекта недвижимости.
Обратите внимание, что есть два способа получить информацию о широте и долготе: я пробовал использовать Google API и веб-скраппинг, оба работали.
В конце концов, вот ключевые наборы данных, которые я использовал:
Набор данных Рейтинг школ — получен с веб-сайта Института Фрейзера с помощью методов веб-скрейпинга.
- Название школ
- Города школ, расположенных
- 2017–18 Рейтинг начальных школ
- Почтовые индексы школ
- Адреса школ
Набор данных Информация о жилье – получен из сайтов со списками домов с помощью методов веб-скрейпинга.
- Адреса домов
- Количество спален в каждом доме
- Количество санузлов в каждом доме
- Почтовые индексы домов
- Широты
- Долготы
- Имена соседства
- Тип резиденции: Дом/Таунхаус/Кондо
- Листинговые цены
- Приблизительные размеры
Данные о площадках Набор данных — получен через Foursquare API
- Количество площадок, закрытых для соседей
- Частота каждой категории мест, таких как офис, автобусная остановка, пиццерия, кафе, китайский ресторан, итальянский ресторан и т. д.
Извлечь данные:
Преобразование данных:
Получите данные о площадках через Foursquare:
Сгруппируйте все данные в один набор данных:
3. Методология
В этом проекте мы будем использовать методы регрессии для прогнозирования цен на жилье в разных зонах. Так как примеров всего 700, а признаков 329. Вот методологии, которые проходят:
Во-первых, уменьшение размерности с использованием матрицы корреляции для фильтрации функций, чтобы избежать разреженности обучающего набора.
Во-вторых, удалите выбросы из-за опечатки веб-сайта или особого случая, которые могут негативно повлиять на производительность нашей модели.
На третьем этапе я хотел бы использовать метод кластеризации K-средних и создать карту области GTA, чтобы изучить базовое распределение кластеров зон.
Четвертый шаг, Анализ и визуализация данных, чтобы мы могли представить влияние различных функций на цены.
Пятый шаг, моделирование машинного обучения. Я буду использовать различные регрессионные модели и методы поиска по сетке, чтобы найти лучшие гиперпараметры каждой модели, изучить их производительность и подтвердить если это работает хорошо.
Наконец, я сравню эффективность различных методов и выскажу несколько идей о том, как повысить точность наших прогнозов в будущем.
Создайте корреляционную матрицу:
Удалите выбросы:
Исследуйте распределение кластеров по разным зонам:
4. Анализ данных и визуализация
Используйте seaborn для построения тепловой карты:
Матрица рассеяния графика:
Используйте метод binning и matplotlib для построения гистограмм.
5. Моделирование
Создание наборов данных для обучения/тестирования и кадра данных для записи производительности
Создайте функцию прогнозирования и построения графика для различных методов машинного обучения
Алгоритм случайного леса
Используйте метод GridSearch для случайного леса, чтобы определить лучшие гиперпараметры.
Используйте функцию try_ Different_method для построения графика предсказания
Диаграмма важности объектов на графике
Алгоритм дерева решений
Используйте Graphviz Создайте график дерева решений
Алгоритм регрессора XGBoost
Алгоритм KNN
Стандартная обработка:
Используйте Keras для развертывания нейронных сетей
Создайте модель NN:
Скомпилируйте модель NN и найдите производительность как для обучающего набора, так и для проверочного набора каждой эпохи:
6. Результаты и обсуждение
Основываясь на производительности R2 и MSE различных методов, мы можем сказать, что Random Forest и XGBoost — лучший выбор для нашего случая и набора данных, хотя оценка ограничена из-за отсутствие точного размера, года постройки и других важных характеристик.
Для метода нейронной сети в этом проекте я использовал некоторые базовые функции Keras для практики и сравнения. Поскольку сам набор данных очень мал, он не может использовать свои преимущества, производительность аналогична той, что мы имеем с алгоритмами дерева решений. В реальной отрасли это требуется только тогда, когда нам нужен огромный набор данных или специальные бизнес-кейсы.
7. Заключение
Целью этого проекта было использование метода парсинга веб-страниц и API для сбора связанных данных GTA, включая жилье, школу, Венеру. Затем используйте метод ETL, чтобы получить чистую версию для анализа/визуализации, в конечном итоге разверните различные методы машинного обучения, используя как Skitlearn, так и Keras.
Как мы можем понять из производительности и аналитики. Большинство функций доказывают, что между собой и ценой существует некоторая корреляция, особенно если их объединить, чтобы получить достойную производительность прогнозирования. Однако, как мы уже упоминали, есть так много функций-кандидатов, которые я пока не смог реализовать. Основываясь на моем личном опыте и деловом опыте родственников, я уверен, что у нас будет гораздо лучшая производительность с более официальными данными, особенно такими как размер жилья, площадь земли, год постройки, плата за управление, рейтинг безопасности, доход, возраст, арендная ставка и т. д. .