Кластеризация соседей Берлина и Лондона по модели k-средних

Введение

Здесь мы собираемся выяснить сходство окрестностей двух разных городов Лондона и Берлина. Мы знаем, что эти два города наиболее популярны для туризма, в них обоих живут люди разных культур, и многие люди мигрируют туда, чтобы получить хорошее образование, технологии, бизнес-учреждение и многое другое.

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

Мы используем наборы данных из kaggle и веб-скрапинг, если это возможно, а также некоторую модель машинного обучения для кластеризации.

Фон

Этот проект действительно вдохновлен рекомендательной системой, в которой мы рекомендуем людей на основе их профиля предпочтений и их предпочтений в похожих районах.

Мы уже выполнили некоторый проект по анализу подобия и кластеризации на прошлой неделе, поэтому мы почти использовали ту же идею, но разница в том, что мы пытаемся получить как можно больше кластеризации класса точности и большего сбора данных, и мы также визуализировали класс кластера соседства в обоих город.

Проблемы

Мы часто сталкиваемся с проблемой, например, когда собираемся в новые места для посещения, проживания или для начала бизнеса. Мы не знаем, какие места лучше всего подходят для поиска и начала бизнеса. Предположим, самое красивое, историческое место для посетителя, общество с низким уровнем преступности, меньше шума или рядом со школой, колледжем, столицей для сдачи внаем студенту или новой семье мигрантов. Другие проблемы, например, где новый бизнес или рынок должен начать получать большее влияние или привлечение клиентов, также узнайте, что подобные вещи находятся недалеко от вашего местоположения и вдали от него.

Теперь эта проблема почти устраняется с помощью анализа сходства и объединения их в какой-то похожий класс, что не является целью в этих проектах.

Описание данных

По сути, это проект о сходстве окрестностей между Лондоном и Берлином, поэтому нам понадобился район и район города Лондона и Берлина. Затем для получения информации о местах проведения мы используем API Foursquare, чтобы изучить информацию о местах проведения в соседнем Лондоне и Берлине.

Лондон:

Мы очищаем вики-страницу и будем использовать пакеты геокодирования Python, чтобы узнать геопозицию всех районов Лондона.

https://en.wikipedia.org/wiki/List_of_areas_of_London

Берлин:

Мы просто используем наборы данных сайта kaggle, которые содержат информацию о районе и районе Берлина, а затем мы находим геопозицию с помощью геокодера Python.

https://www.kaggle.com/brittabettendorf/berlin-airbnb-data?select=neighbourhoods.csv

API Foursquare:

Чтобы найти информацию о местах проведения каждого района обоих городов. Мы используем API Foursquare, тогда он отвечает в формате json, но мы выбираем только необходимые столбцы для информации. Мы получаем доступ к этому с помощью некоторых личных учетных данных, предоставленных значениями Foursquare и Geo-position.

https://foursquare.com

Описание модели

Для кластеризации мы используем неконтролируемую модель машинного обучения. Это модель кластеризации k-mean с возможным классом кластера 5. Некоторые параметры, такие как случайное состояние = 0, init = 'k-means++'. В основном среднее ++ немного опережает, чем просто k -значит.

Методология

Мой код на Git-hub

https://github.com/Bishal-R/Coursera_Capstone/blob/main/week-5/Berlin_London_Neighbour_Analysis.ipynb

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

По сути, мы используем python в качестве основного языка программирования для этого проекта. Конечно, мы также должны импортировать некоторые дополнительные пакеты для идеальной визуализации и создания модели, которые показаны ниже.

· python в качестве основного языка программирования

. matplot и фолиум для а именно

· geocoder для отслеживания геопозиции

· Foursquare API для информации о местах проведения

· Beautiful soup для просмотра веб-страниц

· numpy и pandas для работы с векторами и фреймами данных

· sklearn для моделей машинного обучения

Сбор данных

Данные по Лондону.

Для сбора информации о районах и районах Лондона мы используем парсинг вики-ссылок.

Запрос

Соскоб Очистка

Данные по Берлину

Для поиска информации о районах и районе мы используем kaggle наборов данных, которые состоят из этих двух функций.

Импорт из kaggle

Бросьте Нан и очистите удалить лишний персонаж

Данные API Foursquare

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

Найдя список районов, мы затем подключаемся к API Foursquare для сбора информации о местах проведения в каждом районе. Для каждого района мы выбрали радиус 500 meters.

Данные, полученные от Foursquare, содержали информацию о местах проведения мероприятия на указанном расстоянии от longitude и latitude каждого района. Информация, полученная по каждому объекту, следующая:

1. Соседство: название соседства.

2. Широта района: Широта района.

3. Долгота района: долгота района.

4. Место проведения: название места проведения

5. Широта места проведения: Широта места проведения

6. Долгота места проведения: долгота места проведения

7. Категория места проведения: Категория места проведения

Основываясь на всей информации, собранной как для Лондона, так и для Парижа, у нас достаточно данных для построения нашей модели. Мы группируем районы вместе на основе схожих категорий мест проведения. Затем мы представляем наши наблюдения и выводы. Используя эти данные, наши заинтересованные стороны могут принять необходимое решение.

Предварительная обработка данных

Лондон

удалите s [,] и номер из лондонского района

некоторые значения столбцов по-прежнему содержат некоторые дополнительные символы, такие как квадратная скобка, [число], союз «и», поэтому удалите это [число], и если столбцы района содержат более одного имени, мы берем только имя.

при разделении на основе одной строки «и» название района, например Wandsworth, становится «W», поэтому мы заменяем его на «Wandsworth».

Берлин

Окрестности разделены символом «/», поэтому мы заменяем его запятой, что упрощает дальнейшую работу со строками.

Выбор функций

Для обоих наших наборов данных нам нужны только район, районы и geolocations (latitude and longitude). Таким образом, мы заканчиваем выбор столбцов, которые нам нужны:

Лондон

Удаление и переименование столбцов

Берлин

нам не нужно удалять, а просто переименовать столбцы

Разработка функций

Лондон

выбор только тех строк, в которых есть «POST Town» == «LONDON»

найдите в Google геопозицию всех районов Лондона и добавьте новые столбцы в лондонский фрейм данных.

Берлин

Нам не нужно указывать, потому что мы выбираем из kaggle и нет смешанных больше, чем Берлин

Геопозиция с помощью geocoder

Визуализация окрестностей Лондона и Берлина

Теперь, когда наши наборы данных готовы, с помощью пакета Folium мы можем визуализировать карты Лондона и Берлина с собранными нами районами.

Лондон

Берлин

Одно горячее кодирование

Теперь, когда мы визуализировали районы, нам нужно выяснить, на что похож каждый район и каковы общие места и категории мест в пределах a 500 m radius.

Здесь в игру вступает Foursquare. С помощью Foursquare мы определяем функцию, которая собирает информацию, относящуюся к каждому району, включая название района, геокоординаты, места и категории мест.

Лондон

кадр данных с помощью горячего кодирования

Берлин

Лучшие места в окрестностях

Поскольку мы пытаемся выяснить, какие категории мест существуют в каждом районе, а затем рассчитать 10 наиболее распространенных мест, чтобы основывать наше сходство, мы используем One Hot Encoding для работы с нашим категориальным типом данных категорий мест. . Это помогает преобразовать категориальные данные в числовые данные.

мы пользуемся функцией python get_dummies для горячего кодирования.

Фрейм данных для представления лучших мест в обоих городах

После горячего кодирования, а затем вычислить среднее значение сгруппированных категорий мест для каждого из районов.

Лондон

Берлин

Построение модели — K-средства

Мы будем использовать алгоритм машинного обучения K Means Clustering для объединения похожих районов. Мы можем выбрать множество различных размеров кластеров, мы будем использовать количество кластеров 5, чтобы максимально оптимизировать его.

Затем мы соединяем London_final фрейм данных с классом и отсортированным фреймом данных о местах проведения мероприятий, чтобы добавить широту и долготу для каждого района, чтобы подготовить его к визуализации.

Затем мы объединяем Berlin_final фрейм данных с классом и отсортированным фреймом данных о местах проведения, чтобы добавить широту и долготу для каждого района, чтобы подготовить его к визуализации.

Лондон

Берлин

Визуализация сгруппированных окрестностей

все еще существует вероятность того, что какая-то кластеризация данных может быть упущена, поэтому мы просто удаляем эту строку значений Nan, прежде чем отображать в Folium

Лондон

Берлин

Оба

Вывод

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

вот я [email protected]