Анализ дефицита продуктов питания в Нью-Йорке с использованием Python

Нехватка продуктов питания - хорошо известная проблема в Нью-Йорке. Это относится к тому факту, что в некоторых районах отсутствуют варианты здоровой пищи, обычно предлагаемые в супермаркетах или магазинах свежих продуктов. Эти «пищевые пустыни», которые их в просторечии называют, часто приводят к более высокому уровню ожирения и заболеваний, связанных с ожирением. Кроме того, в этих районах также есть большое количество ресторанов быстрого питания. Рестораны быстрого питания (вполне заслуженно) считаются нездоровыми из-за используемых ингредиентов и средней калорийности каждого приема пищи.

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

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

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

Данные

Во-первых, взгляните на различные пакеты, которые я собираюсь использовать для этого проекта.

Для этого проекта жизненно важен сбор следующих данных:

  • Список районов в Нью-Йорке
  • Широта и долгота окрестностей
  • Вызовы Foursquare API для сбора информации о местах, расположенных вокруг этих координат.

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

Методология

Сначала я поискал список различных районов Нью-Йорка. Я нашел пять разных страниц Википедии, которые дали мне список районов в каждом из пяти районов. Они важны, потому что они будут основой, на которой мы определяем наши координаты. Посмотрите код ниже:

Мы будем использовать пакет beautifulsoup от Python для сбора данных, чтобы использовать пакет Geocoder. Используя геокодер, мы даем каждому району значение широты и долготы. Геокодер использует систему ГИС, которая сопоставляет координаты на основе названий окрестностей.

Затем мы нанесли его на карту Folium, чтобы проверить результаты.

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

  • Рестораны быстрого питания
  • Супермаркеты
  • Продуктовые магазины

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

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

То есть, если бы было всего 8 вариантов и 3 из них были бы заведениями быстрого питания, то фаст-фуд вышел бы на 37,5%.

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

Поскольку размеры были сужены заранее, выбор функций не имел первостепенного значения. Однако затем был проведен анализ главных компонентов (PCA), чтобы определить величину отклонения каждой из объясненных функций. Результаты представляли собой матрицу чисел, которые были определены как наиболее показательные для дисперсии наблюдений. Результаты были использованы в кластеризации KMeans.

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

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

Полученные результаты

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

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



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

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

Кластеры распались как таковые:

  • Кластер 1 - чаще доступны супермаркеты.
  • Кластер 2 - супермаркеты и рестораны быстрого питания одинаково многочисленны.
  • Кластер 3 - больше ресторанов быстрого питания.

Заключение

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

Основываясь на знаниях, которые я привнес в проект о Нью-Йорке, я могу сделать несколько выводов о местах кластеризации.

  1. В большинстве коммерческих районов процент ресторанов быстрого питания выше. Это очевидно, как по их расположению в центральных районах Нью-Йорка, так и по идее, что туристы / пассажиры предпочли бы иметь доступ к более быстрой еде, чем к супермаркетам. Этих районов также больше всего в городе.
  2. Супермаркеты в излишках в более жилых районах. Даже если вы сделаете это предостережение, районы с самым высоким соотношением супермаркетов находятся в районах с более высоким уровнем дохода, таких как Ривердейл в Бронксе, или находятся вдали от районов с высокой посещаемостью, которые обслуживают туристов / пассажиров на работу и с работы. Этих кластеров меньше всего.
  3. В последнем кластере проценты примерно равны. Этот кластер представляет собой смесь обоих других кластеров. Они более жилые, но по-прежнему считаются районами с интенсивным движением пассажиров / туристов.

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

Вы можете проверить этот репозиторий на моем Github. Если вы хотите больше поговорить о нехватке продовольствия в Нью-Йорке или программах, которые Нью-Йорк должен с ними бороться, свяжитесь со мной в LinkedIn.

Я тоже в Твиттере, и вы можете подписаться на меня здесь.

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel