Sklearn может быть первой платформой машинного обучения, которую вы изучили. Исследователям нравится его API за простоту использования и идеальную гибкость при создании прототипов. Сегодня специалисты по машинному обучению, исследователи данных Kaggle и участники хакатона используют библиотеку в сочетании с такими средами глубокого обучения, как Pytorch и Tensorflow, для разделения данных, предварительной обработки и обработки отсутствующих значений и значений NaN.

Шаблон кода API Sklearn

При использовании Scki-learn API мы можем начать с чтения документации. Но мы можем добиться результата еще быстрее, погуглив пример API sckit-learn, который мы пытаемся использовать. Выше приведен пример линейной регрессии, взятый непосредственно с веб-сайта sklearn. Мы также пометили каждую строку комментариями желтым цветом, чтобы вы могли видеть, что делает каждая строка кода. Sklearn прост в использовании, потому что независимо от модели его API следует простому, узнаваемому шаблону: импорт, инициализация, .fit(), оценка, просмотр параметров и .predict().

Шаблон базовой модели

Обычно использование модели scikit-learn следует трем основным шаблонам:

  1. создать экземпляр модели
  2. соответствовать модели
  3. использовать модель для предсказания
  4. Используйте библиотеку визуализации данных для построения графиков. Matplotlib или Seaborn работают.

Пример:

from sklearn.cluster import KMeans
num_clusters=4
kmns = KMeans(num_clusters)
model = kmns.fit(data)
labels = model.predict(data)

Предпочитаете вместо этого смотреть видеоуроки на Youtube? Посмотрите сопутствующее видео здесь.

Промежуточный Scikit Learn

Предварительная обработка данных с помощью Scikit Learn

Кодирование данных

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

from sklearn.preprocessing import LabelEncoder

Преобразование категориальных данных в данные с горячим кодированием:

from category_encoders import OneHotEncoder

Это потенциально может создать большую разреженную матрицу, как при обработке естественного языка (NLP), в которой вместо этого используется встраивание слов.

Нормализация, Масштабирование

Если мы не нормализуем и не масштабируем данные о наших функциях, самые большие числовые данные могут легко доминировать над остальными функциями и сделать нашу модель неточной. Например, цена акций обычно ниже 1000 долларов, даже в копейках. Объем торговли акциями может легко достигать миллиона сделок в день. Функция объема запасов всегда доминирует над другими меньшими значениями, что делает модель нечувствительной к другим функциям.

Минмаксмасштаб

from sklearn.preprocessing import MinMaxScaler

Документация по sklearn

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

X_std = (X — X.min(axis=0)) / (X.max(axis=0) — X.min(axis=0))
X_scaled = X_std * (max — min) + min

Стандартный масштабировщик

from sklearn.preprocessing import StandardScaler

Тренировочный тестовый сплит

from sklearn.cross_validation import train_test_split
# Split the ‘features’ and ‘target’ data into training and testing sets of 80% train 20% test each
X_train, X_test, y_train, y_test = train_test_split(features, 
 target, 
 test_size = 0.2, 
 random_state = 0)
# Show the results of the split
print(“Training set has {} samples.”.format(X_train.shape[0]))
print(“Testing set has {} samples.”.format(X_test.shape[0]))

Ранее в нашей учебной статье по Tensorflow мы показали, что 700 000 строк набора данных MNIST можно разделить на три основных фрагмента: обучение, тестовая проверка, и каждый фрагмент состоит из двух частей: матрицы функций и целевого столбца. Представьте, если бы у нас были только первые 65000 записей, мы могли бы разделить их на X_train, y_train, X_test, y_test, как показано выше. X_train, y_train имеет 55000 строк, X_test, y_test имеет 10000 строк.

Пакетная предварительная обработка

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

Sklearn Imputer

from sklearn.preprocessing import Imputer

«Преобразователь вменения для заполнения пропущенных значений». — scikit изучите документацию. Пример отсутствующих значений missing_values : number, string, np.nan (default) or None .

«Во время вменения… (один) заменить отсутствующие данные заменяющими значениями». Существуют различные типы и разновидности вменения и задействованных стратегий.

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

strategy : string, optional (default=”mean”)
The imputation strategy.
If “mean”, then replace missing values using the mean along each column. Can only be used with numeric data.
If “median”, then replace missing values using the median along each column. Can only be used with numeric data.
If “most_frequent”, then replace missing using the most frequent value along each column. Can be used with strings or numeric data.
If “constant”, then replace missing values with fill_value. Can be used with strings or numeric data.

Термин «стратегия» относится к использованию другого репрезентативного значения, такого как среднее, медиана или наиболее частое значение, или выбранной пользователем константы для замены другого значения — в данном случае отсутствующих значений, таких как np.nan (default) or None, или любых чисел или строк, таких как N/A.

Типы вменения включают 1 однократное вменение: 1a hot-deck, 1b. холодная колода, 1c среднее замещение 1d регрессия 2 множественное вменение.

Расширенные типы вменения — это не просто замена и интеллектуальная оценка значений с помощью передовых методов статистики и обработки данных.

Подробнее о вменении читайте в Википедии. Подробнее читайте в документации sklearn.

Выбор модели — оценка производительности модели с помощью Sklearn

from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_auc_score

Оцените эффективность классификации, используя матрицу путаницы. Остерегайтесь, положение истинно положительного (TP), ложноположительного (FP), ложноотрицательного (FN), истинно отрицательного (TN) может быть изменено в scikit-learn.

Какие ярлыки используются для матрицы путаницы в обучении в scikit? Что означает матрица путаницы scikit-learn?

Вы можете ожидать этого

typical confusion matrix
TP, FP
FN, TN
----------
   T | F
- - - - -
P |TP | FP  
-  - - -
N |FN | FP
-----------
We have True and False on the x axis, Positive and Negative on the y axis.

Вы можете увидеть эту транспонированную форму

scikit learn module has a transposed form
TN,FP
FN,TP

Используйте GridSearchCV для систематического поиска более эффективных моделей.

from sklearn.grid_search import GridSearchCV

Выбор модели

from sklearn.model_selection import cross_val_predict

Визуализация модели и параметров модели

Sklearn предоставляет отличную документацию по моделям и настройке их гиперпараметров. Вот пример, где визуализируются ядра SVM.

Вот еще один пример, где есть дорожная карта для выбора правильной модели, также известной как оценщик.

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