ML еще никогда не был таким простым!
Что, если бы вы могли создать достаточно хорошую модель машинного обучения на Python с очень небольшим количеством строк кода и удивительной простотой?
Что если я скажу вам, что все это делает Pycaretдля Python?
В этой статье мы будем использовать Pycaret для создания модели с нуля всего за несколько шагов. Весь используемый код доступен в этом Блокноте Google Colab, и вы можете воспроизвести те же шаги онлайн через него — настройка не требуется!
С Pycaret создание сквозной модели выполняется всего за 5 шагов:
- Настраивать
- Сравнение моделей
- Создание модели — на основе лучшей модели (или моделей, если вы хотите выполнить наложение/смешивание)
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, чтобы вы могли легко создавать и запускать свои собственные приложения для обработки данных! Проверь это.
Спасибо, что прочитали мою статью, и не стесняйтесь пишите мне, если у вас есть какие-либо предложения или вы хотите узнать больше!