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, включая алгоритмы машинного обучения и подготовку данных:
- Алгоритмы классификации:
- Линейные модели, например, логистическая регрессия, Ridge;
- Метод опорных векторов SVM (Support Vector Machine);
- Метод k-ближайших соседей (k—neighbors);
- Случайный лес (Random Forest);
- Деревья решений (Decision Trees);
- Наивный байесовский классификатор (NaiveBayes);
- Линейный дискриминантный анализ (Linear Discriminant Analysis);
- Нейронные сети(Neural network);
- Алгоритмы регрессии:
- Линейные модели, например, линейная регрессия, Lasso, Elastic-netи многие другие [3];
- Метод опорных векторов SVM (Support Vector Machine);
- Метод k-ближайших соседей (k—neighbors);
- Ансамблевые методы, например, AdaBoost, Gradient Tree Boosting, Stacked Generalizationи многие другие [4];
- Случайный лес (Random Forest);
- Деревья решений (Decision Trees);
- Нейронные сети(Neural network).
- Алгоритмы кластеризации:
- Метод k-средних k—Means;
- Спектральная кластеризация (Spectral clustering);
- Сдвиг среднего значения (Meanshift);
- Метод распространения близости (Affinitypropagation);
- Метод Варда(Ward hierarchical clustering);
- Агломеративные методы (Agglomerative clustering);
- Основанная на плотности пространственная кластеризация для приложений с шумами DBSCAN;
- Сбалансированное итеративное сокращение и кластеризация с помощью иерархий BIRCH.
- Методы уменьшения размерностей:
- Метод главных компонент PCA;
- Латентное размещение Дирихле LDA;
- Факторный анализ(Factor analysis).
- Обработка данных:
- Стандартизация и нормализация данных, например, StandardScaller, MinMaxScaller;
- Нелинейные преобразования, например, отображение на равномерное распределение (QuantileTransform) и нормальное распределение (PowerTransformer);
- Преобразование категориальных данных в числовые, например, OrdinalEncoder, OneHotEncoder;
- Преобразование непрерывных данных в дискретные (Discretization);
- БинаризацияFeature binarization;
- Заполнения пустых значений, например, PolynomialFeatures;
- Векторизация, например, DictVectorizer, CountVectorizer, TfIdftransformer;
- Работа с моделями:
- Кросс-валидация (cross validation);
- Настройка гиперпараметров, например,GridSearchCV;
- Метрики для оценки модели;
- Сохранение моделей;
- Валидация моделей, например, Validation curve, Learning curve.
Основными достоинствами Scikit-learn считают удобный интерфейс, множество современных алгоритмов, подробную документацию и интеграцию с другими Python-библиотеками. Поэтому она активно используется во множестве научных и коммерческих проектов. В частности, сегодня она применяется в музыкальной платформе Spotify, программе для заметок Evernote, системе интернет-бронирования отелей Booking.com, платформе сбора подписей Change.org и многих других приложениях [5].
Смотрите также:
- ТОП-4 Python-библиотек машинного обучения по версии Kaggleза 2019 год
- 4 шага к моделированию MachineLearning: практические примеры на Python
- Решаем задачу численного прогнозирования с помощью линейной регрессии на Python