Напишите мне на [email protected] и зайдите на мой сайт: koshu.me или на страницу Github, где я загрузил этот проект: https://github.com/Tacosushi

Обзор части 1:

В школьные годы и даже сейчас я всегда знал, что люди делят страны на три широкие категории: 1-й мир, 2-й мир и 3-й мир. Первый мир, также известный как развитая страна, относился к капиталистическим странам, а второй мир относился к коммунистически-социалистическим странам. В последнюю категорию вошли все остальные нации. Происхождение этих слов, согласно сообщению Quora, которое я прочитал (https://www.quora.com/What-are-first-world-second-world-and- Third-world-countries), было от остатков холодная война. Меня, однако, больше интересует, сколько других способов мы можем классифицировать нации. Для этого я планирую использовать K-кластеризацию, метод обучения без учителя.

Реализация части 2:

Часть 1 (получение данных):

Все данные, которые я использую для этого проекта, были получены на сайте Всемирного банка: http://databank.worldbank.org/, где они позволяют вам загружать множество данных по всем странам за выбранные вами периоды времени. . Пример показан ниже:

В левой части изображения есть всплывающее меню под названием «База данных», где вы можете сортировать общие типы информации, которую вы хотите. Я выбрал для загрузки (в формате csv):

1. Показатели мирового развития

2. Бедность и справедливость

3. Работа

4. Цели развития тысячелетия

Часть 2 (очистка данных):

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

Как всегда, я начал с импорта своих библиотек, а также наборов данных, с которыми мне предстояло работать.

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

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

После этого я нашел страны, по которым есть данные у Всемирного банка.

Я также специально сделал так, чтобы брал данные только за 2015 год, но, конечно, я мог изменить их, когда захочу.

Наконец, я собрал все имеющиеся у меня данные по странам, касающиеся каждой функции, в один фрейм данных и сохранил его в виде CSV-файла.

Часть 3 (Очистка данных, часть 2):

Получив необработанный CSV-файл со всеми данными, я хотел немного исправить данные.

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

Часть 3 (K означает кластеризацию):

Из приведенного выше у меня был фрейм данных, который выглядел примерно так, как показано ниже:

По сути, у меня были страны и их значения характеристик.

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

Однако я мог бы визуализировать функции, если бы я изобразил только две из них одновременно, как показано ниже:

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

Я выполнил K-кластеризацию (из 2 групп) для набора данных, включающего две функции по всем возможным функциям. Например, я бы построил график «ВВП» в зависимости от «Плотности населения» и сделал бы K-кластеризацию на основе этого и разделил бы страны на основе этого. Затем я бы сделал то же самое для «ВВП» в сравнении с «Доступом людей к воде». Я сделал это со всеми перестановками, которые мог сделать, и, по сути, создал множество «мини-кластеров».

Код показан ниже.

Как всегда, я начал со своих библиотек и импортировал свой набор данных.

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

Первоначальное определение xx и yy было взято из моего тренировочного прогона и может быть проигнорировано.

Я повторил все функции для «i» и все остальные функции для «j», таким образом, я мог получить набор данных x, y без повторяющихся функций. Затем я сделал kmeans для каждой из этих парных функций и сохранил данные в фрейме данных под названием countrydata.

Часть 4 (группировка):

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

Заголовок каждого столбца относился к тем функциям, которые я сравнивал друг с другом, и 1 представлял группу 1, а 0 представлял группу 2.

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

Я сделал это, взяв за основу строку 1 или ответ DZA страны и посмотрев, насколько он похож на него в других странах. Я сделал это, проверив, отличается ли число в данном столбце для другой страны (например, AGO) от DZA. Если это так, я добавляю 1. Я проделывал это со всеми столбцами и находил общее количество различий, которые были у второй страны по сравнению с DZA. Я сделал это для всех стран по сравнению с DZA и построил гистограмму. Я повторил это, взяв за основу все остальные страны.

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

Приведенная ниже гистограмма основана на использовании Финляндии в качестве базы и ясно показывает бимодальное распределение. Иногда базовой страны не было, поэтому мне приходилось использовать базовую страну, которая приводила к наиболее «бимодальному» распределению.

Затем я разделил страны на две группы в зависимости от количества отличий от базы (ось x). Число, которое дало мне равное разделение, было 26 различий. Таким образом, если у страны было 26 или более отличий от Финляндии, то она считалась бы отдельной от Финляндии группой, но в противном случае она была бы в той же группе, что и Финляндия.

Я сделал это, импортировав свои библиотеки и данные.

Choices[] представляет страны, которые я использую в качестве базы, изначально у меня были все страны, но я очистил их до 1, потому что я уже прошел их вручную.

После этого я создал «гистограмму различий», как показано в таблице частот.

Затем я заявил, что если разница (a[‘Diff’]) больше 26, то разделить ее на одну группу, а если нет, то на другую.

Оттуда я разделил страны на две категории.

Синим цветом обозначены страны, похожие на Финляндию, желтым — непохожие.