Scikit-learn (также называемая sklearn) — самая популярная библиотека машинного обучения Python для науки о данных. Любому специалисту по анализу данных или инженеру по машинному обучению нужен Scikit в своем арсенале инструментов. Для многих крупных компаний, таких как JP Morgan, Spotify, Hugging Face и других, Scikit-learn является неотъемлемой частью разработки их продуктов.
Понимание этого инструмента может открыть двери для работы в мире науки о данных и помочь вам получить работу в области науки о данных.
Sklearn предоставляет гибкие инструменты для обучения, улучшения и выполнения наших моделей машинного обучения. Эта статья поднимет ваши навыки Sklearn на новый уровень с некоторыми советами и приемами инсайдера. Эти передовые методы улучшат ваши навыки машинного обучения и упростят вашу жизнь программирования.
1. Внесение пропущенных значений с помощью iterative imputer
Когда в наборе данных отсутствуют значения, в алгоритме машинного обучения может возникнуть множество проблем. В каждом столбце нам необходимо определить и заменить отсутствующие значения, прежде чем мы будем моделировать задачи прогнозирования. Этот процесс называется вменением данных.
Легко придерживаться традиционных методов для вменения пропущенных значений, таких как режим (для классификации) или среднее / медианное значение (для регрессии). Но 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_imputerfrom sklearn.impute import IterativeImputerdf = 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 функциями.
Look at the code example below with 1,000 samples and 20 features.from sklearn.datasets import make_classificationX, y = make_classification(n_samples=1000, n_features=20)
3. Использование Pickle для сохранения модели
Сопротивление модели позволяет нам повторно использовать модель машинного обучения без ее переобучения. Модель Pickle Sklearn позволяет нам повторно использовать модель и добиться устойчивости модели. После того, как вы сохраните модель как Pickle, ее можно будет легко загрузить позже в любое время для получения дополнительных прогнозов.
Для сериализации ваших алгоритмов и их сохранения вы можете использовать библиотеки Python pickleили joblibPython. Взгляните на приведенный ниже пример кода.
import pickle# Save a KNN modelsaved_model = pickle.dumps(knn)# Load a saved KNN modelload_model = pickle.loads(saved_model)# Make new predictions from a pickled modelload_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)