В мире машинного обучения и науки о данных немногие пакеты известны лучше, чем scikit-learn. Его публикацию в JMLR цитируют более 52 000 раз.¹ И если вы занимались машинным обучением до того, как sklearn впервые появился на сцене примерно в 2011 году, вы поймете, почему.

Еще в 2000-х большинство из нас, бедолаг, проводили исследования в таких средах, как Matlab, Orange или R. Если вы использовали Matlab, вы, как правило, сталкивались с головной болью с лицензированием набора инструментов или изо всех сил пытались поделиться кодом с коллегами, пытаясь избежать затрат. с Октавой GNU.

И если вы использовали Orange, что ж… давайте просто скажем, что Java заслужила свою репутацию благодаря затратам на выделение кучи и использование памяти. Когда DDR2 была новой, вы бы потратили немалые деньги, чтобы получить x86 до 16 ГБ, и все еще удивлялись, куда все это делось, когда вы пытались обучать свои модели.

…Р? Что ж, я приберегу свое мнение о R для другого поста 😊

Я помню, как впервые столкнулся со вселенной scipy наборов инструментов, сокращенно называемых scikits. Мой первый опыт был связан с пакетами изображений и временных рядов, scikit-image и scikits.timeseries. Это было где-то в 2010 году, и я, наконец, сделал прыжок, чтобы перенести весь мой старый код Matlab во вселенную numpy, scipy и scikits.*.

Если вам интересно, это было еще до того, как панды стали действительно пригодными для использования, а это означало, что вся ваша разработка функций все еще выполнялась в numpy и scipy.

Не помню точно, какой именно проект меня к этому подтолкнул. Вероятно, это было связано с реестрами USPTO или аукционами Министерства финансов, где, я думаю, в то время я использовал SVM. Устав от использования LibSVM или LibLinear напрямую, я нашел молодой проект на Python, который должен был обеспечить довольно хорошую поддержку базовых процедур C и Fortran… ну а остальное лично для меня уже история.

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

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

Для начала давайте посмотрим, кто принял scikit-learn в сообществе. Как обычно, мы будем использовать нашу платформу licens.io, которая разрешает и нормализует все эти ссылки.

Во-первых, показательный анекдот. Вы можете задаться вопросом — какой пакет PyPI первым стал зависеть от sklearn? Те из вас, кто работал с командой, могут догадаться, что это один из пакетов INRIA, возглавляемых Александром Грэмфором или Гаэлем Вароко… но ответ, насколько это касается наших данных, на самом деле представляет собой библиотеку paddle, которая реализовывала Проксимальный алгоритм обучения двойных словарей FN (PADDLE).

Хотя paddle больше не находится в стадии активной разработки, на PyPI было три выпуска — 1.0.0, 1.0.1 и 1.0.2. А в версии 1.0.2 paddle добавила тест MNIST с использованием трех ссылок scikits.learn:

Теперь в большинстве анализов будет пропущено paddle. В раздаче не было файла requirements.txt. Его параметры setuptools в setup.py тоже не задавали никаких зависимостей, не говоря уже о scikits-learn.

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

paddle был первым пакетом, но точно не последним. Хотя есть много способов подсчитать, какие пакеты использовали scikit-learn больше всего за эти годы, на рисунке ниже показан самый простой способ взглянуть на мир — общее количество импортов классов во всех выпусках PyPI и Conda.

Результаты, вероятно, вас не удивят, так как эти пакеты являются наиболее известными оболочками, ускорителями или интерфейсами в экосистеме scikit-learn. По иронии судьбы, Orange3 — фреймворк машинного обучения, который я использовал 20 лет назад, — теперь является одним из крупнейших scikit-learn пользователей по этому измерению.

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

PS: Есть ли другой пакет, который вы хотели бы, чтобы мы проанализировали или написали? "Дайте нам знать"!

[FN1]: по данным Google Scholar, которые, по общему признанию, могут занижать или завышать количество таких ссылок. https://scholar.google.com/scholar?q=scikit-learn

Первоначально опубликовано на https://licens.io.