Если вместо этого вы хотите использовать MultiTrain для решения задач регрессии, нажмите здесь.

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

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

Теперь давайте обучим набор данных с помощью библиотеки MultiTrain и посмотрим, как это работает по сравнению с традиционным способом тестирования моделей.

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

В этом уроке мы будем работать над проблемой классификации с набором данных Классификация цен на мобильные телефоны.

УСТАНОВИТЕ БИБЛИОТЕКУ ЧЕРЕЗ ТЕРМИНАЛ

pip install MultiTrain

УСТАНОВИТЕ БИБЛИОТЕКУ В ВАШ JUPYTER NOTEBOOK

! pip install MultiTrain

ИМПОРТИТЕ НЕОБХОДИМЫЕ БИБЛИОТЕКИ

Для работы с этим набором данных нам нужно импортировать следующие библиотеки

import warnings
import pandas as pd
import seaborn as sns
from MultiTrain import MultiClassifier
from numpy import mean, arange
from matplotlib import pyplot as plt
warning.filterwarnings('ignore')

ИМПОРТ НАБОР ДАННЫХ

Теперь давайте также импортируем наборы данных, с которыми мы будем работать.

df = pd.read_csv(“train_phone.csv”)

ПРОВЕРЬТЕ ДИСБАЛАНС В МЕТКАХ НАБОРА ДАННЫХ

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

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

# price_range is the column name for the labels
df["price_range"].value_counts()

ОБУЧЕНИЕ МОДЕЛЯМ

Мы пропустим исследовательский анализ данных, здесь мы сосредоточимся на том, чтобы увидеть, как мы можем использовать MultiTrain для этой цели.

Следующим шагом является разделение набора данных на функции и метки.

features = df.drop('price_range', axis=1)
labels = df['price_range']

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

Затем объект MultiClassifier должен быть определен в библиотеке MultiTrain.
Набор данных, с которым мы работаем, включает четыре разных метки, что делает проблему мультиклассовой, как вы увидите, если будете программировать вместе со мной. Это также необходимо определить в экземпляре MultiClassifier.

Определив параметр случайного состояния, все модели машинного обучения, обучаемые на наборе данных, будут давать согласованные результаты. Установка для ядер значения -1 гарантирует, что обучение использует все ядра ЦП для повышения производительности.

train = MultiClassifier(random_state=42,
                        imbalanced=False,
                        target_class='multiclass',
                        cores=-1)
# It's important to assign this method to a variable because it 
# returns the training and test splits to be used in the fit method
returned_split = train.split(X=features,
                             y=labels,
                             randomState=42,
                             sizeOfTest=0.2)
fit = train.fit(X=features,
                y=labels,
                splitting=True,
                split_data=returned_split,
                show_train_score=True)

Кроме того, вы можете тренироваться на своем наборе данных с помощью KFold Split.

train = MultiClassifier(random_state=42,
                        imbalanced=False,
                        target_class='multiclass',
                        cores=-1)
# setting kf to True tells the fit method to use the KFold Split for # training.
fit = train.fit(X=features,
                y=labels,
                kf=True, 
                fold=5,
                show_train_score=True)

Запустите коды в своей записной книжке, чтобы просмотреть полные модели и их показатели. Вы также можете сравнить отдельные модели с реализацией scikit-learn, чтобы увидеть, дают ли они аналогичные результаты.

Следите за следующей статьей о том, как использовать MultiTrain для задач регрессии.