Scikit-Learn

Scikit-learn – это одна из самых популярных Python-библиотек машинного обучения (Machine Learning) c открытым исходным кодом. Scikit-learn включает в себя различные алгоритмы классификации, регрессии и кластеризации и позволяет взаимодействовать с другими библиотеками численного моделирования, такими как Pandas, NumPy, Scipy.

История

В 2007 году David Cournapeau начал разработку проекта в рамках Summer Code от Google [1]. Summer Code – это программа, в которой студенты работают над проектами с открытым исходным кодом (open source) под руководством менторов. Позже к нему присоединился Matthieu Brucher, который использовал Scikit-learn в качестве своей диссертации.

В 2010 году Fabian Pedregosa, Gael Varoquaux, Alexandre Gramfort и Vincent Michel, студенты французского университета INRIA [2], взяли проект в свои руки и выпустили 1-й релиз. С тех пор релизы выходят примерно каждые 3 месяца, а разработчики со всего мира присоединяются и вносят свою лепту в развитие библиотеки и по сей день.

Scikit-learn – универсальная библиотека Data Science

Scikit-learn предоставляет огромное количество инструментов Data Science, включая алгоритмы машинного обучения и подготовку данных:

  1. Алгоритмы классификации:
    • Линейные модели, например, логистическая регрессия, Ridge;
    • Метод опорных векторов SVM (Support Vector Machine);
    • Метод k-ближайших соседей (kneighbors);
    • Случайный лес (Random Forest);
    • Деревья решений (Decision Trees);
    • Наивный байесовский классификатор (NaiveBayes);
    • Линейный дискриминантный анализ (Linear Discriminant Analysis);
    • Нейронные сети(Neural network);
  2. Алгоритмы регрессии:
    • Линейные модели, например, линейная регрессия, Lasso, Elastic-netи многие другие [3];
    • Метод опорных векторов SVM (Support Vector Machine);
    • Метод k-ближайших соседей (kneighbors);
    • Ансамблевые методы, например, AdaBoost, Gradient Tree Boosting, Stacked Generalizationи многие другие [4];
    • Случайный лес (Random Forest);
    • Деревья решений (Decision Trees);
    • Нейронные сети(Neural network).
  3. Алгоритмы кластеризации:
    • Метод k-средних kMeans;
    • Спектральная кластеризация (Spectral clustering);
    • Сдвиг среднего значения (Meanshift);
    • Метод распространения близости (Affinitypropagation);
    • Метод Варда(Ward hierarchical clustering);
    • Агломеративные методы (Agglomerative clustering);
    • Основанная на плотности пространственная кластеризация для приложений с шумами DBSCAN;
    • Сбалансированное итеративное сокращение и кластеризация с помощью иерархий BIRCH.
  4. Методы уменьшения размерностей:
    • Метод главных компонент PCA;
    • Латентное размещение Дирихле LDA;
    • Факторный анализ(Factor analysis).
  5. Обработка данных:
    • Стандартизация и нормализация данных, например, StandardScaller, MinMaxScaller;
    • Нелинейные преобразования, например, отображение на равномерное распределение (QuantileTransform) и нормальное распределение (PowerTransformer);
    • Преобразование категориальных данных в числовые, например, OrdinalEncoder, OneHotEncoder;
    • Преобразование непрерывных данных в дискретные (Discretization);
    • БинаризацияFeature binarization;
    • Заполнения пустых значений, например, PolynomialFeatures;
    • Векторизация, например, DictVectorizer, CountVectorizer, TfIdftransformer;
  6. Работа с моделями:
    • Кросс-валидация (cross validation);
    • Настройка гиперпараметров, например,GridSearchCV;
    • Метрики для оценки модели;
    • Сохранение моделей;
    • Валидация моделей, например, Validation curve, Learning curve.

Основными достоинствами Scikit-learn считают удобный интерфейс, множество современных алгоритмов, подробную документацию и интеграцию с другими Python-библиотеками. Поэтому она активно используется во множестве научных и коммерческих проектов. В частности, сегодня она применяется в музыкальной платформе Spotify, программе для заметок Evernote, системе интернет-бронирования отелей Booking.com, платформе сбора подписей Change.org и многих других приложениях [5].

Смотрите также:

Источники
  1. https://scikit-learn.org/stable/about.html
  2. https://ru.wikipedia.org/wiki/INRIA
  3. https://scikit-learn.org/stable/supervised_learning.html
  4. https://scikit-learn.org/stable/modules/ensemble.html
  5. https://scikit-learn.org/stable/testimonials/testimonials.html