Веб-скрейпинг, Foursquare API, Folium и машинное обучение

Описание

«Я не могу делать кирпичи без глины». Есть предположения, кто это сказал? Это был не известный технический директор или аналитик данных. Человек, который это сказал, жил задолго до появления технологических компаний. Эту строчку сказал Шерлок Холмс. , знаменитый сыщик, созданный сэром Артуром Конан Дойлем. Дойл имел в виду, что Холмс не мог делать никаких выводов (кирпичи) без данных (глина). Таким образом, мы можем сказать, что данные — это строительный блок, который мы используем для всего. Мы можем этого не осознавать, но люди постоянно анализируют данные. Например, при покупке нового смартфона мы обращаем внимание на различные характеристики, такие как цена, репутация компании, объем памяти, оперативная память, дисплей и т. д. Мы сравниваем все эти характеристики с другими брендами, а затем, наконец, решаем, какой телефон лучше для нас. Это пример из повседневной жизни, когда мы используем данные для совершения правильных действий.

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

В этом проекте я буду проходить весь этот процесс шаг за шагом:

  1. Понимание проблемы бизнеса.
  2. Получение данных.
  3. Очистка данных.
  4. Анализ данных/моделирование.
  5. Визуализация данных.

Найдите код, связанный с этой статьей, на GitHub

Найдите меня в LinkedIn

Понимание проблемы бизнеса.

Бангалор, столица индийского штата Карнатака с населением более 10 миллионов человек. Социальное и экономическое разнообразие города ясно отражено в еде Бангалора. Вы можете найти людей как из Северной Индии, так и из Южной Индии, которые путешествовали из разных штатов в Бангалор. Из-за большого количества населения владельцы ресторанов в конечном итоге делят местность. Следовательно, с точки зрения инвесторов, они предпочли бы создавать предприятия в районах, где конкуренция менее интенсивна.

Данные сбор и очистка.

  1. Извлечение данных со страницы Википедии в DataFrame

Я взял ссылку из Википедии, чтобы получить информацию о местах в Бангалоре, используя красивую суповую библиотеку. Здесь я использовал красивый суп, так как он легко анализирует HTML и возвращает значение в текстовом виде. Я создал пустой список под названием neighborhoodList, чтобы я мог добавлять данные с помощью цикла for в этот список.

2. Получить географические координаты

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

3. Создание карты Бангалора

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

4. Использование API Foursquare для изучения локаций

Foursquare — компания, которая создала массивный набор данных о местоположении. Их данные о местоположении являются наиболее полными и довольно точными. API Foursquare позволяет нам искать места и возвращать данные о местах для заданного места. После ввода информации об API Foursquare, такой как client_id, client_secret и версия, мы получаем доступ к API и давайте посмотрим на 100 лучших мест, которые находятся в радиусе 2 км.

Анализ данных/моделирование.

5. Анализ каждой местности

Теперь, когда мы получили данные из API Foursquare, мы должны быть готовы приступить к анализу локаций и данных о местоположении. One-hot-encoder помогает нам кодировать категориальные функции в виде однократного числового массива и создавать двоичный столбец для каждой категории. Мы можем разделить каждый населенный пункт в зависимости от категории места проведения.

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

6. Получение общего количества мест, классифицированных как рестораны, для каждого населенного пункта.

Собрав данные из API Foursquare, я получил список из 7008 площадок. Однако не на всех площадках есть рестораны. Затем я собрал список всех ресторанов из этих 2710 заведений и превратил его в dataFrame. Мы сгруппировали рестораны по местонахождению. Всего мы получили 139 местонахождений. Район с наибольшим количеством ресторанов - Джаянагар с 55 ресторанами.

7. Кластеризация ресторанов по населенным пунктам.

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

График WSS или график внутри суммы квадратов ошибок используется для определения оптимального количества кластеров. Колено на графике представляет оптимальное значение кластеров. Мы должны выбрать оптимальное количество кластеров (в основном K) из графика, где мы видим резкое снижение кривой локтя. Например, здесь K=6 будет хорошим выбором для K.

Кластеризация населенных пунктов Бангалора с использованием K-средних с K = 6

Классификация населенных пунктов для представления плотности ресторанов выглядит следующим образом:

  1. 0–19 Рестораны: «Низкий»;
  2. 20–39 Рестораны: «Средние»
  3. Более 40 ресторанов: «Высокий»

Визуализация данных

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

Более 50 процентов населенных пунктов относятся к категории «низкой» плотности размещения ресторанов, и менее 10 населенных пунктов относятся к категории «высокой» плотности.

Визуализация кластеров

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

Результаты и заключение

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

  1. Кластер 0: запад/юго-запад Бангалора с низкой плотностью населения;
  2. Кластер 1: Южный Бангалор с низкой плотностью населения;
  3. Кластер 2: Восточный Бангалор с плотностью от низкой до средней;
  4. Кластер 3: Северный Бангалор с низкой плотностью населения;
  5. Кластер 4: Центральный Бангалор — северная зона с средней плотностью;
  6. Кластер 5: Центральный Бангалор — Южная зона с плотностью от средней до высокой.

Результаты интуитивно понятны, поскольку плотность ресторанов в большинстве населенных пунктов в основном низкая на периферии города в кластере 0, кластере 1 и кластере 3, с более высокой плотностью к центру в кластере 5 и умеренной скоростью в кластере 2.

Некоторые районы в окрестностях района Маратахалли / Уайтфилд имеют среднюю плотность населения, что можно объяснить застройкой в ​​​​результате наличия многочисленных корпоративных офисов.

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

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

  1. Сколько люди обычно тратят на еду в ресторане?
  2. Сколько денег клиент готов заплатить за хорошую еду?
  3. Готов ли клиент пройти некоторое расстояние до вашего ресторана?
  4. И предпочтения в еде и т.д.

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