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

Я спарсил более 1 тыс. лучших профилей по машинному обучению на Github, и вот что я нашел

Я спарсил более 1 тыс. лучших профилей по машинному обучению на Github, и вот что я нашел
просмотров
6 мин чтение
#Визуализация данных
Table Of Content

Получение информации из лучших профилей по машинному обучению на Github

Мотивация

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

Не стесняйтесь форкать и играть с кодом для этой статьи в этом репозитории на GitHub:

Data-science/visualization/github на ветке master · khuyentran1401/Data-science

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

github.com

Мой метод для парсинга

Инструменты

Для парсинга я использую три инструмента:

  • Beautiful Soup для извлечения URL-адресов всех репозиториев с тегом машинного обучения. Beautiful Soup - это библиотека Python, которая позволяет легко парсить данные с веб-сайтов. Если вы не знакомы с Beautiful Soup, я написал учебник о том, как парсить с помощью Beautiful Soup в этой статье.

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

medium.com

  • PyGithub для извлечения информации о пользователях. PyGithub - это библиотека Python для использования Github API v3. С его помощью вы можете управлять своими ресурсами Github (репозитории, профили пользователей, организации и т. д.) из скриптов Python.
  • Requests для извлечения информации о репозиториях и ссылках на профили участников.

Методы

Я парсю владельцев и топ-30 участников из топ-90 репозиториев, которые появляются в поиске.

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

new_profile.info()

В частности, первые 13 данных получаются отсюда.

Остальные данные получаются из репозиториев (исключая форкнутые репозитории) пользователя:

  • total_stars - общее количество звезд у всех репозиториев
  • max_star - максимальное количество звезд среди всех репозиториев
  • forks - общее количество форков у всех репозиториев
  • descriptions - описания всех репозиториев пользователя
  • contribution - количество вкладов за последний год

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

Гистограммы

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

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

График

Как мы видим, у llSourcell (Siraj Raval) большинство подписчиков (36261). У следующего пользователя примерно 1/3 подписчиков от того, что есть у llSourcell (12682).

Мы можем провести дальнейший анализ, чтобы определить, какой процент подписчиков получают топ 1% пользователей.

>>> top_n = int(len(top_followers) * 0.01)
>>> sum(top_followers.iloc[0: top_n,:].loc[:, 'followers'])/sum(top_followers.followers)
0.41293075864408607

1% самых популярных пользователей получают 41% подписчиков!

Те же самые закономерности прослеживаются и в других данных, таких как total_stars, max_star, forks. Чтобы лучше рассмотреть эти столбцы, мы изменим масштаб оси y для этих функций на логарифмический масштаб. Ось y для contribution не изменяется.

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

Например, самое распространенное слово в английском языке - "the", - появляется примерно одну десятую часть времени в типичном тексте, хотя оно не так важно, как другие слова.

Мы часто видим закон Ципфа в других рейтингах, таких как ранги населения городов в разных странах, рейтинги доходов, ранги количества людей, покупающих книгу и т. д. Теперь мы видим этот закон снова в данных Github.

Корреляция

Но каковы взаимосвязи между этими данными? Существует ли сильная связь между ними? Я использую scatter_matrix, чтобы получить общую картину корреляции между этими данными.

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

  • Максимальным количеством звезд и общим количеством звезд (0.939)
  • Количеством форков (от других) и общим количеством звезд (0.929)
  • Количеством форков и количеством подписчиков (0.774)
  • Количеством подписчиков и общим количеством звезд (0.632)

Языки

Какие языки программирования предпочитают топовые пользователи машинного обучения? Каков процент использования Python, Jupyter Notebook, C, R? Мы можем использовать столбчатую диаграмму, чтобы узнать это. Чтобы лучше рассмотреть наиболее популярные языки, мы удалим языки, которые встречаются менее 10 раз.

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

  • Python
  • JavaScript
  • HTML
  • Jupyter Notebook
  • Shell и так далее

Возможность найма

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

Местоположение

Чтобы понять, где находятся пользователи по всему миру, наша следующая задача - визуализировать местоположение пользователей. Мы будем использовать местоположения, полученные от 31% пользователей, которые указали свое местоположение. Начнем с извлечения списка местоположений из df и определения их с помощью geopy.geocoders.Nominatim.

Затем используйте scatter_geo в Plotly, чтобы создать карту!

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

Облака слов для описаний и биографий

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

Создание облаков слов позволит нам получить общую картину слов и их частоты использования в описаниях и биографиях. И создание облаков слов с помощью Python невероятно просто с помощью библиотеки WordCloud!

Word Clouds

Создание облаков слов для биографий

Word Clouds

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

Поделитесь своими результатами

Мы собрали графики из списка. Пришло время создать отчет и поделиться тем, что вы нашли! Datapane - идеальный инструмент для этого.

Теперь у нас есть все графики, которые мы создали в этой статье, на веб-сайте, размещенном на Datapane и готовы к публикации!

Выводы

Данные получены от пользователей и участников первых 90 репозиториев с наилучшим соответствием по ключевому слову "машинное обучение" на Github. Таким образом, эти данные не гарантируют сбора всех лучших пользователей машинного обучения на Github.

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

Мне нравится писать о основных концепциях data science и играть с различными алгоритмами и инструментами data science. Вы можете связаться со мной через LinkedIn и Twitter.

Поставьте звезду этому репозиторию, если вы хотите посмотреть коды ко всем статьям, которые я написал. Подписывайтесь на меня в Medium, чтобы быть в курсе моих последних статей по data science, подобных этим:


Как организовать свои статьи по Data Science с помощью Github

Перегружены новой информацией? Теперь вы можете отслеживать и создавать настраиваемые заметки для своих статей с легкостью

towardsdatascience.com

Введение в Datapane: библиотеку на Python для создания интерактивных отчетов

Простая платформа для создания красивых отчетов и обмена результатами анализа с вашей командой

towardsdatascience.com

Как создать интерактивные графики с помощью Altair

Используйте свой анализ данных в 5 простых строках кода на Python

towardsdatascience.com

Как использовать Visual Studio Code для ваших проектов по Data Science

Мы понимаем насколько неэффективными были наши методы только после открытия нового эффективного метода

towardsdatascience.com

Как обучить модель опорных векторов на нелинейном наборе данных

Введение в модель опорных векторов и ее использование для нелинейного набора данных

towardsdatascience.com