Битва за окрестности

Поиск лучшего района в Торонто с помощью Data Science

Автор: Умар Хан

Этот проект направлен на использование всех концепций Data Science, изученных в рамках профессионального курса IBM Data Science Professional. Мы определяем бизнес-проблему, данные, которые будут использоваться, и используя эти данные, мы можем анализировать их с помощью инструментов машинного обучения. В этом проекте мы шаг за шагом пройдемся по всем процессам, от разработки проблемы и подготовки данных до окончательного анализа, и, наконец, предоставим заключение, которое может быть использовано заинтересованными сторонами бизнеса для принятия решений.

Оглавление

  1. Введение
  2. Целевая аудитория
  3. Обзор данных
  4. Методология
  5. Обсуждение
  6. Вывод

1. Выявление бизнес-проблемы (введение):

Торонто - один из самых густонаселенных районов Канады. Будучи страной возможностей, он привлекает самых разных людей из разных этнических групп в центральный город Канады, Торонто. Будучи крупнейшим городом Канады с населением более 6 миллионов человек, нет никаких сомнений в разнообразии населения. Мультикультурализм прослеживается в различных районах, в том числе; Китайский квартал, Корсо Италия, Маленькая Индия, Кенсингтонский рынок, Маленькая Италия, Корейский квартал и многие другие. Центр Торонто, являющийся центром взаимодействия между этническими группами, дает предпринимателям множество возможностей начать или развивать свой бизнес. Это место, где люди могут попробовать лучшее из каждой культуры во время работы или просто проходя мимо. Торонто известен своей прекрасной кухней.

Цель этого проекта - использовать данные о местоположении Foursquare и региональную кластеризацию информации о местах проведения, чтобы определить, какой район в Торонто может быть «лучшим» для открытия ресторана. Пицца и паста - одни из самых покупаемых итальянских блюд в Торонто. Торонто является четвертым по величине домом для итальянцев с населением более 500 тыс. Человек, есть множество возможностей для открытия нового итальянского ресторана. В рамках этого проекта мы найдем наиболее подходящее место для предпринимателя для открытия нового итальянского ресторана в Торонто, Канада.

2. Целевая аудитория

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

3. Обзор данных

Данные, которые потребуются, будут представлять собой комбинацию файлов CSV, которые были подготовлены для целей анализа из нескольких источников, которые предоставят список районов в Торонто (через Википедию), географическое положение районов (через пакет Geocoder). ) и данные о местах проведения итальянских ресторанов (через Foursquare). Данные о месте проведения помогут найти, какой район лучше всего подходит для открытия итальянского ресторана.

3.1 - Сбор данных:

Источник 1: Окрестности Торонто через Википедию.

  1. Https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M

Указанный выше сайт Википедии предоставил почти всю информацию о кварталах. Он включал почтовый индекс, район и название районов, присутствующих в Торонто. Поскольку формат данных не подходит для анализа, сбор данных был выполнен с этого сайта (показано на рис. 2).

Источник 2: данные о географическом местоположении с использованием пакета Geocoder Package.

2. https://cocl.us/Geospatial_data

Второй источник данных предоставил нам географические координаты окрестностей с соответствующими почтовыми индексами. Файл был в формате CSV, поэтому нам пришлось прикрепить его к фрейму данных Pandas (показан на рисунке 3).

Источник 3: данные о местах проведения с использованием Foursquare.

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

4. Методология

4.1 - Очистка данных

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

1. Будут обрабатываться только ячейки, которым назначен район. Районы, которые не были назначены, игнорируются.

2. В одной области почтового индекса может существовать более одного района. Например, в таблице на странице Википедии вы заметите, что M5A указан дважды и имеет два района: Харборфронт и Риджент-парк. Эти две строки будут объединены в одну с соседями, разделенными запятой, как показано на Рис. 2, строка 4.

3. Если в ячейке есть район, но район не назначен, то этот район будет таким же, как и район.

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

Используя данные о широте и долготе, полученные из пакета Geocoder, мы объединили две таблицы вместе на основе почтового индекса.

После этого данные о месте проведения, полученные из Foursquare API, были объединены с таблицей выше, в результате чего мы получили местное место в радиусе 500 метров, показанное ниже.

4.2 - Исследование данных

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

Этот фрагмент кода предоставил нам карту ниже:

Затем мы использовали Foursquare API, чтобы получить список всех заведений в Торонто, включая парки, школы, кафе, рестораны азиатской кухни и т. Д. Получение этих данных имело решающее значение для анализа количества итальянских ресторанов по всему Торонто. Всего в Торонто было 45 итальянских ресторанов. Затем мы объединили данные Foursquare Venue с данными Neighborhood, которые затем дали нам ближайшее Venue для каждого из Neighborhood.

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

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

Затем мы сгруппировали эти строки по району и взяли среднее частоты встречаемости каждой категории объекта.

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

Кластеризация K-средних

Чтобы сделать анализ более интересным, мы хотели сгруппировать районы на основе районов, в которых в этом районе было схожее среднее количество итальянских ресторанов. Для этого мы использовали кластеризацию K-средних. Чтобы получить оптимальное значение K, которое не соответствовало модели ни переоснащения, ни недостаточности, мы использовали метод точки локтя. В этом методе мы провели тест с различным количеством значений K и измерили точность, а затем выбрали лучшее значение K. Наилучшее значение K выбирается в точке, в которой линия имеет самый крутой поворот. В нашем случае у нас была точка локтя при K = 4. Это означает, что у нас будет всего 4 кластера.

Затем мы использовали модель, которая точно указала оптимальное значение K. Мы импортировали «KElbowVisualizer» из пакета Yellowbrick. Затем мы подогнали нашу модель K-средних к визуализатору Elbow.

Это дало модель ниже:

Мы просто интегрировали модель, которая соответствовала бы ошибке и рассчитывала оценку искажения. Из пунктирной линии мы видим, что отвод находится на K = 4. Более того, при кластеризации K-средних объекты, похожие по определенной переменной, помещаются в один и тот же кластер. Районы, в которых средняя частота посещений итальянских ресторанов была примерно одинаковой, были разделены на 4 кластера. Каждый из этих кластеров был помечен от 0 до 3, поскольку индексирование меток начинается с 0 вместо 1.

После этого мы объединили данные о месте проведения с таблицей выше, создав новую таблицу, которая станет основой для анализа новых возможностей открытия нового итальянского ресторана в Торонто. Затем мы создали карту, используя пакет Folium на Python, и каждая окрестность была раскрашена в соответствии с меткой кластера.

  • Кластер 1 - красный
  • Кластер 2 - фиолетовый
  • Кластер 3 - Бирюза
  • Группа 4 - Темный хаки

На приведенной выше карте показаны различные кластеры, в которых средняя частота посещений итальянских ресторанов была одинаковой.

4.4 - Анализ данных

У нас всего 4 кластера (0,1,2,3). Прежде чем мы проанализируем их один за другим, давайте проверим общее количество кварталов в каждом кластере и средние итальянские рестораны в этом кластере. На гистограмме, созданной с помощью Matplotlib (рисунок 18), мы можем сравнить количество соседей на кластер. Мы видим, что кластер 1 имеет наименьшее количество окрестностей (1), а кластер 2 - наибольшее (70). В кластере 3 14 районов, а в кластере 4 только 8. Затем мы сравнили средние итальянские рестораны в кластере.

Кластерный анализ

Эта информация имеет решающее значение, поскольку мы видим, что, хотя в кластере 1 всего 1 район, в нем больше всего итальянских ресторанов (0,1304), в то время как в кластере 2 больше всего районов, но меньше всего в среднем итальянских ресторанов (0,0009). Среднее значение для среднего итальянского ресторана составило данные для рисунка 18. Кроме того, из карты мы видим, что районы в кластере 2 являются наиболее малонаселенными. Теперь давайте проанализируем кластеры по отдельности (Примечание: это всего лишь фрагменты данных).

Кластер 1 (красный):

Кластер 1 находился в районе Северного Йорка. Бедфорд и Лоуренс Мэнор Восток были двумя районами, входившими в этот кластер. В кластере 1 было 19 уникальных мест проведения мероприятий, и только 3 из них были итальянскими ресторанами. В кластере 1 был самый высокий средний показатель итальянских ресторанов, равный 0,130435. Причина, по которой средний показатель итальянских ресторанов самый высокий, заключается в том, что все эти рестораны находятся в двух кварталах, Бедфорд и Лоуренс-Мэнор-Ист.

Кластер 2 (синий):

Всего было 70 кварталов, 229 различных заведений и только 1 итальянский ресторан. Таким образом, среднее количество итальянских ресторанов, которые находились рядом с заведениями кластера 2, является самым низким и составляет 0,01. На карте мы видим, что узлы кластера 3 были разбросаны по всему Торонто, что делало его одним из самых малонаселенных кластеров.

Кластер 3 (бирюзовый):

В кластере 3 средний показатель итальянских ресторанов был вторым после самого низкого. Кластер 3 в основном располагался в центре города, но также имел несколько районов в Западном Торонто, Восточном Торонто и в Северном Йорке. В этот кластер были включены такие районы, как Райерсон, Центр Доминион Торонто, Дон Миллс, Район Гарден, Королевский парк и многие другие. Всего было 176 уникальных заведений, из которых 27 были итальянскими ресторанами.

Группа 4 (темный хаки):

Площадки Кластера 4 были расположены в центральном, западном, восточном и центральном районах Торонто, а также в Скарборо. Такие районы, как Центральная Бэй-стрит, Университет Торонто, Централ-Бэй-стрит и Ривердейл, входили в состав этого кластера. Всего в кластере 4 было 91 уникальное заведение с 16 итальянскими ресторанами. Это второй по величине средний показатель итальянских ресторанов в этом кластере, который составляет примерно 0,063.

Таким образом, порядок расположения среднего итальянского ресторана в каждом кластере выглядит следующим образом:

1. Кластер 1 (≈0,1304)

2. Кластер 4 (≈0.0632)

3. Кластер 3 (≈0,0317)

4. Кластер 2 (≈0,0009)

5. Обсуждение:

Большинство итальянских ресторанов находятся в кластере 1, представленном красными кластерами. Районы, расположенные в районе Северного Йорка с самым высоким средним показателем итальянских ресторанов, - это Бедфорд-Парк и Восточное поместье Лоуренса. Несмотря на то, что в кластере 2 огромное количество районов, здесь почти нет итальянского ресторана. Мы видим, что в районе Даунтаун Торонто (кластер 3) второе место по среднему показателю среди итальянских ресторанов. Глядя на близлежащие заведения, это оптимальное место для открытия нового итальянского ресторана в центре Торонто, поскольку в этом районе много районов, а итальянских ресторанов практически нет, что исключает любую конкуренцию. Вторые по величине районы, которые имеют отличные возможности, находятся в таких районах, как Аделаида и Кинг, Фэрвью и т. Д., Который находится в кластере 2. Наличие 70 кварталов в этом районе без итальянских ресторанов дает хорошую возможность для открытия нового ресторана. Некоторые из недостатков этого анализа - кластеризация полностью основана на данных, полученных из Foursquare API. Кроме того, анализ не принимает во внимание итальянское население в разных районах, так как это может сыграть огромную роль при выборе места для открытия нового итальянского ресторана. На этом мы сделали вывод об оптимальных результатах для этого проекта и рекомендовали предпринимателю открыть настоящий итальянский ресторан в этих местах с минимальной конкуренцией или без нее.

6. Заключение

В заключение, чтобы завершить этот проект, у нас была возможность решить бизнес-проблему, и она была решена таким же образом, как и настоящий специалист по данным. Мы использовали многочисленные библиотеки Python для получения информации, управления содержимым, а также для разбивки и визуализации этих наборов данных. Мы использовали Foursquare API, чтобы исследовать настройки в окрестностях Торонто, получить большой объем данных из Википедии, которые мы скопировали с помощью библиотеки парсинга Beautifulsoup Web. Мы также визуализировали использование различных графиков, имеющихся в библиотеках seaborn и Matplotlib. Точно так же мы применили стратегию ИИ, чтобы предвидеть ошибку, учитывая информацию, и использовали Folium, чтобы изобразить ее на карте.

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

Код размещен на Github, а меня можно найти на Linkedin !!!

К следующей проблеме :)