ML еще никогда не был таким простым!

Что, если бы вы могли создать достаточно хорошую модель машинного обучения на Python с очень небольшим количеством строк кода и удивительной простотой?

Что если я скажу вам, что все это делает Pycaretдля Python?

В этой статье мы будем использовать Pycaret для создания модели с нуля всего за несколько шагов. Весь используемый код доступен в этом Блокноте Google Colab, и вы можете воспроизвести те же шаги онлайн через него — настройка не требуется!

С Pycaret создание сквозной модели выполняется всего за 5 шагов:

  1. Настраивать
  2. Сравнение моделей
  3. Создание модели — на основе лучшей модели (или моделей, если вы хотите выполнить наложение/смешивание)

4. Настройка модели

5. Доработка модели

И затем вы можете либо сохранить его на потом (в виде файла pkl), либо использовать для прогнозирования.

Круто, правда? Начнем!

Итак, что мы будем предсказывать?

В этой статье мы будем использовать классику Data Science: старый добрый Титаник!

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

Для этого мы будем использовать только Pandas и Pycaret. Pandas уже предустановлен в Colab, поэтому нам просто нужно установить Pycaret следующим образом:

!pip установить pycaret

После выполнения шага у нас есть все, что нам нужно, и мы можем импортировать эти модули следующим образом:

импортировать панд как pd

из импорта pycaret.classification *

Затем, используя наши инструменты, мы откроем исходный CSV-файл Titanic по URL-адресу и импортируем его в фрейм данных:

титанический = pd.read_csv('https://raw.githubusercontent.com/edneibach/pycaret-jumpstart/main/titanic.csv')

В этой статье мы не будем погружаться в подготовку данных для машинного обучения, так как набор данных Titanic сам по себе не требует большой подготовки, а Pycaret также позаботится о некоторой подготовке данных (горячее кодирование, масштабирование функций, разделение обучения/тестирования… )

Прежде чем мы отпустим Пикаре, нам нужно знать структуру набора данных и какой столбец мы хотим предсказать — .describe() и .head() помогут нам в этом:

titanic.describe (включить = «все»)

titanic.head()

PassengerId и Name бесполезны, поскольку они не помогут нам что-либо предсказать и не имеют статистической значимости, поэтому мы опускаем их, чтобы убрать шум (помните — все столбцы должны иметь какое-то отношение к тому, что мы хотим предсказать).

titanic.drop(['PassengerId','Имя'],inplace=Истина,ось=1)

Теперь все готово — столбец, который мы хотим предсказать, — «Выжившие» (1 означает, что они выжили, а 0 — нет). Начнем?

1. Настройка

установка (титаник, цель = «Выжил»)

Это в основном скажет Пикаре, что такое данные и что вы хотите предсказать.

Он автоматически назначит типы данных — если все выглядит хорошо, вы можете просто нажать Enter. Он также сохранит 30% набора данных, чтобы проверить его в конце.

Если нет, вы можете вручную указать правильные типы данных, используя аргументы «categorical_variables» и «numeric_variables».

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

2. Сравнение моделей

моя модель = сравнение_моделей ()

Это позволит обучить несколько моделей (используя перекрестную проверку в k-кратном порядке, что является хорошей практикой проверки) и ранжировать их. По умолчанию модели ранжируются по точности, но вы можете изменить это с помощью аргумента sort.

Теперь, когда вы знаете, какие модели лучше всего, вы можете создавать и использовать их.

В этой статье мы не будем рассматривать наложение или смешивание, которые представляют собой способ объединения лучших моделей для достижения лучших результатов (мы создадим только один классификатор), но вы можете использовать stack_models() или blend_models(), если хотите. получить лучшие результаты.

3. Создание модели

моя модель = создать_модель (моя модель)

Это создаст новый классификатор на основе результата, полученного методом compare_models (лучшая модель). Результатом здесь являются баллы, полученные с помощью k-кратной перекрестной проверки. Вы должны следить за средними результатами.

4. Настройка модели

моя модель = tune_model (моя модель)

Это позволит настроить гиперпараметры для созданной вами модели.

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

5. Завершение модели

моя модель = finalize_model (моя модель)

(без вывода)

Это обучит модель всему набору данных (вместо обучения на 70% набора данных) и вернет вам ту же модель.

Все готово! Теперь вы можете делать новые прогнозы или сохранять модель для прогнозов в другое время или в другом месте.

5.1 — Сохранение вашей модели

save_model (моя модель, 'моя модель')

Это сохранит вашу модель как файл .pkl в каталоге, где запущен скрипт Python. Затем вы можете загрузить его с помощью load_model() и использовать для прогнозирования.

Поскольку мы запускаем этот скрипт в Google Colab, вы можете щелкнуть значок папки слева, и файл будет там. Затем вы можете загрузить его или скопировать его путь, чтобы ссылаться на него в Colab.

5.2 — Загрузка вашей модели

из pycaret.classification импортировать load_model, предсказание_модели

load_model('моя модель')

Важно: «mymodel» ссылается на «mymodel.pkl» в каталоге, где запущен скрипт. Вы также можете указать на другой каталог.

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

Грандиозный финал — делаем прогнозы!

Чтобы делать прогнозы, нам потребуются новые строки («наблюдения») данных, чтобы мы могли ссылаться на них в predict_model().

Мы можем использовать этот фрагмент кода для создания фиктивного фрейма данных, который мы можем протестировать:

testdata = pd.DataFrame (столбцы = титанические. столбцы)

testdata.loc[0] = ['','2','женщина','35','0','0','',80,'','S']

Теперь, когда у нас в руках есть и нож, и сыр, мы можем использовать predict_model для создания новых прогнозов в виде фрейма данных.

прогнозы = прогноз_модель (моя модель, тестовые данные)

print("Выжил: ", предсказания['Ярлык'].loc[0])

print("Оценка: ", прогнозы['Оценка'].loc[0])

Как видите, этот человек, скорее всего, выживет.

И модель очень хороша, имея приблизительно точность 82%.

Согласно этой статье, менее 5% конкурентов на Kaggle удается получить точность выше 80% с набором данных Titanic. И все же мы сделали это за несколько простых шагов с помощью Pycaret.

Удивительно, правда?

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

Спасибо, что прочитали мою статью, и не стесняйтесь пишите мне, если у вас есть какие-либо предложения или вы хотите узнать больше!