Scikit-learn (также называемая sklearn) — это самая популярная библиотека машинного обучения Python для обработки данных. Любой специалист по данным или инженер по машинному обучению нуждается в Scikit в своем наборе инструментов. Для многих крупных компаний, таких как J.P. Morgan, Spotify, Hugging Face и других, Scikit-learn является неотъемлемой частью разработки их продуктов.

Понимание этого инструмента может открыть двери для трудоустройства в мире науки о данных и помочь вам легче получить работу в области науки о данных.

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

Сегодня мы рассмотрим следующие 5 лучших практик и приемов:

  • Вменение пропущенных значений с помощью итеративного импутера
  • Генерация случайных фиктивных данных
  • Использование Pickle для сохранения модели
  • Построение матрицы путаницы
  • Создание визуализаций для деревьев решений
  • Что изучать дальше

1. Вменение пропущенных значений с помощью итеративного импутера

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

Легко придерживаться традиционных методов заполнения пропущенных значений, таких как мода (для классификации) или среднее/медиана (для регрессии). Но Sklearn предоставляет более мощные и простые способы вменения пропущенных значений.

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

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

Чтобы использовать эту встроенную функцию итеративного вменения, необходимо импортировать enable_iterative_imputer, поскольку она все еще находится на экспериментальной стадии.

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_iterative_imputer  
>>> # now you can import normally from sklearn.impute
>>> from sklearn.impute import IterativeImputer

Взгляните на этот пример кода ниже, чтобы увидеть, насколько просто IterativeImputer. С помощью этого кода любые отсутствующие значения во фрейме данных будут заполнены в новом фрейме данных с именем impute_df.

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

from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
df = pd.DataFrame(*a dataset with missing values that we want to impute*)
imp = IterativeImputer(max_iter=10, verbose=0)
imp.fit(df)
impute_df = imp.transform(df)
impute_df = pd.DataFrame(impute_df, columns=df.columns)

2. Генерация случайных фиктивных данных

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

Sklearn позволяет легко генерировать надежные фиктивные данные. Мы просто используем функции make_classification() для данных классификации или make_regression() для данных регрессии. Вы также захотите установить параметры, такие как количество образцов и функций.

Эти функции дают нам контроль над поведением ваших данных, поэтому мы можем легко отлаживать или тестировать небольшие наборы данных.

Посмотрите на приведенный ниже пример кода с 1000 образцов и 20 функциями.

from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=20)

3. Использование Pickle для постоянства модели

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

Чтобы сериализовать свои алгоритмы и сохранить их, вы можете использовать библиотеки pickle или joblib Python. Взгляните на пример кода ниже.

import pickle 
# Save a KNN model 
saved_model = pickle.dumps(knn)
# Load a saved KNN model
load_model = pickle.loads(saved_model)
# Make new predictions from a pickled model 
load_model.predict(test_X)

4. Построение матрицы путаницы

Матрица путаницы — это таблица, описывающая эффективность классификатора для тестовых данных. В последнем выпуске Sklearn добавлена ​​функция plot_confusion_matrix для создания доступной и настраиваемой матрицы путаницы, которая отображает наши истинные положительные, ложноположительные, ложноотрицательные и истинно отрицательные значения.

Взгляните на этот пример кода из документации Sklearn.

>>> from sklearn.metrics import confusion_matrix
>>> y_true = [2, 0, 2, 2, 0, 1]
>>> y_pred = [0, 0, 2, 2, 0, 2]
>>> confusion_matrix(y_true, y_pred)
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])

5. Создание визуализаций для деревьев решений

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

Теперь мы можем визуализировать деревья решений с помощью matplotlib, используя tree.plot_tree. Это означает, что вам не нужно устанавливать какие-либо зависимости для создания простых визуализаций. Затем вы можете сохранить свое дерево как файл .png для быстрого доступа.

Взгляните на этот пример из документации Sklearn. Пример визуального дерева решений должен дать вам базовую структуру того, что генерирует Scikit-learn (дополнительные сведения см. в официальной документации).

tree.plot_tree(clf)

Что изучать дальше

Поздравляю! Теперь вы узнали намного больше о Sklearn и готовы вывести свои навыки машинного обучения на новый уровень. Нам еще многое предстоит узнать о Scikit, чтобы получить максимальную отдачу от этой мощной библиотеки.

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

Образовательный курс Практическое машинное обучение с помощью Scikit-learn поможет вам глубже погрузиться в линейную регрессию, логистическую регрессию, кластеризацию k-средних и многое другое. К концу вы сможете уверенно использовать Sklearn в своих проектах.

Или, если вы готовы к более сложному контенту, ознакомьтесь с курсом Educative Grokking the Machine Learning Interview, чтобы узнать, как применять концепции машинного обучения к реальным ситуациям проектирования систем, которые вы можете ожидать от машинного обучения. интервью.

Удачного обучения!

Продолжить чтение о Scikit-learn и науке о данных на Educative

Начать обсуждение

Какая библиотека Python вам больше всего нравится для задач, связанных с данными? Была ли эта статья полезна? Дайте нам знать в комментариях ниже!