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

Введение:

Судя по названию, этот проект касается города Хайдарабад, Индия. Перед тем, как перейти непосредственно к проблеме, рекомендуется дать официальное представление о городе. Итак, давайте познакомимся с городом Хайдарабад.

Хайдарабад — столица индийского штата Телангана. Он расположен в северной части южной Индии. По оценкам, по состоянию на 2021 год в городе проживает 9,7 миллиона человек, и он является шестым по численности населения мегаполисом Индии. Это также пятая по величине городская экономика в Индии. Слияние местных и мигрировавших людей привело к самобытной культуре, и город превратился в передовой центр восточной культуры. Многие ремесла, такие как живопись, ювелирные изделия, литература, одежда и т. д., по-прежнему популярны в Хайдарабаде.

Киноиндустрия на телугу в городе является второй по величине киноиндустрией в стране. Город превратился в центр фармацевтики и биотехнологий в Индии. Создание города HITEC, посвященного информационным технологиям, побудило многонациональные компании, такие как Google, Amazon, Apple, Facebook и Microsoft, открыть свои операции в городе Хайдарабад.

Как и Индия, город Хайдарабад является одним из лучших представителей ее великой истории, разнообразной культуры и кухни. В городе есть разные кухни, и он внесен в список творческих гастрономических городов ЮНЕСКО. Город славится своей популярной едой «Бириани». Многие рестораны предлагают блюда разных кухонь. В городе богатая культура питания, восходящая к империям Низамов и Великих Моголов. Некоторые из кухонь, которые предлагает город, - это арабская, турецкая, иранская и местная кухня телугу.

Теперь давайте перейдем непосредственно к бизнес-задаче.

Бизнес-проблема:

Деловая проблема, с которой мы здесь имеем дело, заключается в том, что у нас есть бизнесмен, который хочет открыть ресторан в Хайдарабаде. Но он не знал, с чего начать. Теперь наша главная цель — решить эту проблему за него. Чтобы он мог решить, где открыть свой ресторан в городе.

Город Хайдарабад — одно из лучших мест в стране для открытия ресторана. Город предлагает людям различную кухню и богатую разнообразную еду. Понятно, что открытие ресторана в городе выгодно для ведения бизнеса. Разнообразие людей и их предпочтения в еде дают очень хорошую возможность конкурировать в пищевом бизнесе. В городе много микрорайонов. Выбор оптимального для открытия ресторана – непростое решение. Задача специалиста по обработке данных — собрать информацию обо всех районах города и представить ее заинтересованным сторонам/заинтересованным сторонам. Чтобы они приняли бизнес-решение о месте открытия ресторана. Для этого необходимы данные. Давайте посмотрим, какие данные необходимы для этого проекта и как их получить.

Источники данных и очистка данных:

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

Получить названия районов:

После быстрого поиска в Google было обнаружено, что существует страница Википедии, на которой представлена ​​информация о районах города Хайдарабад. Ниже приведена ссылка на веб-страницу Википедии.

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

Чтобы получить данные, давайте очистим эту веб-страницу Википедии и получим необходимые данные. Для веб-скрейпинга использовался красивый пакет супа на питоне. При проверке веб-страницы необходимые данные в тегах «‹li›».

Библиотека запросов Python использовалась для извлечения данных из URL-адреса. Для данных с веб-страницы был использован красивый суп-объект. Полученные данные затем отфильтровываются, чтобы получить необходимые данные. Наконец, наши необходимые данные хранятся во фрейме данных pandas.

Веб-скрапинг был выполнен, как показано на рисунках ниже.

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

Получить координаты районов:

Координаты широты и долготы окрестностей не были доступны на странице Википедии. Для получения координат использовался nominatim API сайта openstreetmap.org. Запрос API должен быть отправлен в API для получения данных. Ответ, который мы получаем, содержит координаты запрошенного адреса в формате JSON. С помощью этого API получаются координаты всех районов города Хайдарабад. Это показано ниже.

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

Очистка данных: проблема с данными координат:

При использовании nominatim API координаты 14 районов не получены. Это в основном потому, что,

1. Для некоторых районов API не предоставляет координаты по неизвестным причинам.

2. Несколько названий районов на веб-странице Википедии написаны с ошибками. Это было найдено путем ручного поиска координат в гугле.

Эта проблема была преодолена путем поиска координат оставшихся районов с использованием указанного ниже веб-сайта.



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

Наконец, после получения координат для всех окрестностей данные сохраняются во фрейме данных pandas. Теперь наши необходимые данные находятся в двух фреймах данных. Один для названий районов, а другой для координат. Эти два фрейма данных объединены в один фрейм данных, необходимый для нашего проекта.

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

Библиотека Geopy для получения координат города Хайдарабад:

Geopy — это библиотека Python, которую можно использовать для получения координат адреса. Эта библиотека использовалась для получения координат самого города Хайдарабад. Эти координаты помогут построить карту города Хайдарабад с помощью библиотеки визуализации фолиума Python. Ниже приведен пример.

Данные о местоположении района с использованием Foursquare API:

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

Этот API использовался в этом проекте для получения сведений о ближайшем районе. Для получения данных из API необходимо отправить поисковый запрос в API Foursquare. Ответ от API содержит запрошенные данные в формате JSON.

Для получения данных API требуются учетные данные, такие как CLIENT_ID, CLIENT_SECRET и VERSION. Их можно получить, создав учетную запись на сайте Foursquare. Ответ отфильтровывается, чтобы получить необходимые данные. Наконец, данные сохраняются во фрейме данных.

Методология:

У нас есть необходимые данные для нашего проекта. Посмотрим на статистический анализ данных. В нашем последнем фрейме данных с именем hyd_data всего 244 записи. Таким образом, у нас есть 244 района и их координаты в этом фрейме данных.

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

Во фрейме данных места проведения 1154 записи. При проверке фрейма данных есть 186 уникальных категорий мест. Нас интересуют районы с ресторанами. Давайте отсортируем фрейм данных и проверим 10 самых популярных мест в каждом районе. Чтобы мы получили представление о районах, где есть рестораны. Это достигается путем группировки районов и получения среднего значения частоты появления каждой категории мест проведения. Наконец, мы назовем этот фрейм данных как фрейм данных sorted_venues, который выглядит, как показано ниже.

Алгоритм машинного обучения:

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

Алгоритм K означает:

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

1. Случайным образом инициализируйте «n» точек данных из набора данных, называемых центроидами кластера. Здесь «n» — количество центроидов кластера.

2. Теперь вычисляется расстояние между оставшимися точками данных и центроидами кластера. Точки данных с наименьшим расстоянием до центроидов кластера назначаются им для формирования кластеров.

3. Вычисляется среднее значение расстояний между точками данных и центроидом этого конкретного кластера. Центроид перемещается в это рассчитанное среднее положение.

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

Выбор количества кластеров:

В некоторых задачах мы можем не иметь ни малейшего представления о выборе «k», количества кластеров. Итак, чтобы найти оптимальное значение для выбора количества кластеров (k), мы тестируем алгоритм с помощью метода локтя. В методе локтя мы выбираем предопределенный диапазон для количества кластеров (k). Мы запускаем алгоритм K-средних в этом диапазоне «n» и вычисляем сумму квадратов расстояний точек данных до их центроидов кластера. Если мы построим сумму квадратов расстояний против количества кластеров (k), мы получим график, как показано на рисунке ниже.

Форма участка такая же, как форма локтя, отсюда и название участка локтя. На локтевом графике мы выбираем k, где сюжетная линия отклоняется под углом. На приведенном выше графике линия отклоняется при k = 3. Следовательно, оптимальное значение k равно 3.

Построение карты города Хайдарабад с наложенными сверху районами:

Используя библиотеку folium, создается карта города Хайдарабад с наложенными на нее районами. Что показано ниже

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

Результаты:

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

  1. Названия районов и их координаты во фрейме данных hyd_data.

2. У нас также есть данные о 10 лучших заведениях каждого района во фрейме данных sorted_venues.

3. С помощью алгоритма машинного обучения кластеризации K Means данные во фрейме данных sorted_venues сегментируются на 3 кластерные группы.

Используя вышеуказанные 3 элемента данных, мы формируем фрейм данных final_data. Фрейм данных final_data содержит имя Района, его широту и долготу, метку кластера (маркирует каждый район, к какому кластеру он принадлежит) и 10 самых распространенных мест каждого района. Кадр final_data выглядит так, как показано на рисунке ниже.

Отображение результатов с помощью folium:

Визуально отображая результаты, мы получаем лучшее представление о кластерах и окрестностях. Для черчения используем библиотеку folium. Эта библиотека очень полезна для отображения данных о местоположении. Библиотека folium используется для создания красивых визуализаций карт. Он также имеет функцию масштабирования, которая позволяет увеличивать карту и исследовать области внутри карты. Кластеры на графике обозначены круглыми цветными маркерами. Три кластера отмечены красными, синими и зелеными кружками. Окончательный результат графика показан ниже.

На карте красная круглая метка обозначает кластер 1, синяя круглая метка обозначает кластер 2, а зеленая метка обозначает кластер 3. Эти кластеры создаются на основе среднего значения частоты появления подобных категорий мест в окрестностях. Мы можем проверить результаты карты, взглянув на сгруппированный окончательный фрейм данных. Сгруппированный окончательный фрейм данных — это не что иное, как окончательный фрейм данных, разделенный по кластерам. Поскольку в нашем результате у нас есть 3 кластера, окончательный фрейм данных разбивается на 3 фрейма данных по кластерам. Давайте посмотрим на них.

Фрейм данных кластера 1:

Фрейм данных кластера 2:

Фрейм данных кластера 3:

Обсуждение результатов:

Из изображений всех трех кадров данных кластера мы можем провести некоторый анализ и обсудить их. В первом кластере данных мы можем сказать, что рестораны не входят в число самых популярных мест. Но они находятся на 3-м и 9-м местах по распространенности. Исходя из этого наблюдения, можно сказать, что либо конкуренция, либо спрос на рестораны в данном конкретном кластере ниже. Если мы углубимся в это глубже и найдем ответ на вопрос, «почему рестораны не являются самыми популярными местами в первом кластере?», мы можем получить четкое представление о том, стоит ли открывать ресторан в этот кластер.

Во втором кластере рестораны занимают 4-е и 9-е места по популярности. Но самым распространенным местом являются банкоматы. Здесь ситуация аналогична первому кластеру. Поэтому здесь можно применить тот же тип анализа.

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

Вывод:

В этом проекте нашей бизнес-задачей является выбор района для открытия ресторана в городе Хайдарабад, Индия. Для этой задачи нам сначала нужны районы Хайдарабада и данные об их местоположении. Необходимые данные были получены с сайта Википедии и с помощью API-интерфейса nominatim. Данные о месте проведения каждого района были получены с помощью API Foursquare. Алгоритм кластеризации K-средних был использован для данных и сгруппировал данные в 3 кластера. Каждый кластер был создан путем группировки районов по среднему значению частоты встречаемости каждой категории мест проведения. Конечный результат был помечен и разделен на 3 кластера. Данные были построены с использованием библиотеки folium. Был проведен анализ окончательных наборов данных и сделаны наблюдения. Наблюдения и комментарии к данным должны помочь акционерам принять решение о том, где открыть ресторан.

Наконец, если вы читаете мой проект, спасибо за ваше время, и если у вас есть какие-либо предложения, советы или идеи, пожалуйста, прокомментируйте.