Библиотека Python ML с низким кодом, которая помогает определить, какая модель работает лучше без настройки

Ленивый прогноз — это интересная концепция, которую я нашел, когда искал что-то новое в машинном обучении. Меня заинтересовало название «Ленивый прогноз».

Оглавление

Что такое ленивый прогноз?

Давайте послушаем от ChatGPT, что делает Lazy Predict.

Lazy Predict – это библиотека Python, которая автоматизирует процесс выбора и оценки модели в машинном обучении. Он обеспечивает быстрый и простой способ оценки нескольких моделей классификации и регрессии в заданном наборе данных.

Как это работает?

С помощью Lazy Predict вы можете просто предоставить данные обучения и тестирования методу fit, и он будет автоматически обучать и оценивать различные модели на ваших данных. Это экономит ваше время и усилия, устраняя необходимость индивидуальной настройки и настройки нескольких моделей.

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

Итак, давайте начнем с того, что попробуем решить проблему регрессии и классификации.

Регрессия

У меня есть набор данных Регрессия опоссумов, в котором я собираюсь найти возраст опоссумов с помощью ленивого прогнозирования.

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

!pip install lazypredict
from sklearn.model_selection import train_test_split
from lazypredict.Supervised import LazyRegressor


# Split the dataset into training, validation, and testing sets
X_trainval, X_test, y_trainval, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_trainval, y_trainval, test_size=0.25, random_state=42)

# Use Lazy Predict to evaluate multiple models on the training set
clf = LazyRegressor(verbose=0, ignore_warnings=True, custom_metric=None)
models, predictions = clf.fit(X_train, X_val, y_train, y_val)

Смотрим на модели

Мы могли видеть, что RandomForestRegressor работал лучше для этих данных, за ним следовали другие модели. Вот и все!

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

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
clf= RandomForestRegressor(random_state=1)

X=pd.get_dummies(X)
# Split the dataset into training, validation, and testing sets
X_trainval, X_test, y_trainval, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_trainval, y_trainval, test_size=0.25, random_state=42)



# predict the results
clf.fit(X_train, y_train)
y_pred=clf.predict(X_test)


MSE= mean_squared_error(y_test,y_pred)
MSE

Теперь проверка случайных данных внутри тестового набора

#checking the results

X_test.iloc[3]

print("Actual age: ",y_test.iloc[3])
print("Predicted age: ",y_pred[3])
print("Error : ",y_test.iloc[3]-y_pred[3])

Разница в возрасте здесь 1,58

Классификация

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

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

!pip install lazypredict
from sklearn.model_selection import train_test_split
from lazypredict.Supervised import LazyClassifier


# Split the dataset into training, validation, and testing sets
X_trainval, X_test, y_trainval, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_trainval, y_trainval, test_size=0.25, random_state=42)

# Use Lazy Predict to evaluate multiple models on the training set
clf = LazyClassifier(verbose=0, ignore_warnings=True, custom_metric=None)
models, predictions = clf.fit(X_train, X_val, y_train, y_val)

Смотрим на модели

Похоже, что LGBMClassifier работал лучше для этих данных, а затем для других моделей.

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

import lightgbm as lgb
from sklearn.metrics import accuracy_score
clf = lgb.LGBMClassifier()

X=pd.get_dummies(X)
# Split the dataset into training, validation, and testing sets
X_trainval, X_test, y_trainval, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_trainval, y_trainval, test_size=0.25, random_state=42)



# predict the results
clf.fit(X_train, y_train)
y_pred=clf.predict(X_test)


accuracy=accuracy_score(y_pred, y_test)
print('Accuracy: ',accuracy)

#checking the results

X_test.iloc[2]

y_test.iloc[2]

y_pred[2]

Это то же самое! Наша модель правильно предсказывала тестовые данные, поскольку имела точность 1.

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

Ограничения

  • На данный момент его библиотека поддерживает только задачи типа регрессии и классификации.
  • Существует несколько моделей классификации и регрессии, которые не были включены в Lazy Predict, такие как → регрессия опорных векторов (SVR), регрессия гауссовского процесса (GPR), машины опорных векторов (SVM), гауссовский наивный байесовский анализ, квадратичный дискриминантный анализ (QDA) и несколько более.
  • Мы не можем напрямую взять модель из фрейма данных после прогнозирования, так как имя модели хранится в виде строки. Если вам нужно протестировать модель в тестовых данных, вызовите поддерживаемые библиотеки для топ-модели отдельно и проверьте, как мы сделали выше.
  • Lazy Predict не выполняет настройку гиперпараметров для оцениваемых моделей. Он использует гиперпараметры по умолчанию для каждой модели, что может быть неоптимальным для вашего набора данных.
  • Lazy Predict не выполняет тонкую настройку. Если это необходимо в нашей задаче, нам нужно индивидуально настроить каждую модель отдельно.
  • Lazy Predict ожидает, что входные данные будут в определенном формате (например, pandas DataFrame). Если ваши данные структурированы по-другому или требуют дополнительных шагов предварительной обработки, вам может потребоваться соответствующим образом адаптировать формат данных.
  • Lazy Predict может эффективно обрабатывать наборы данных среднего размера, но может столкнуться с проблемами производительности при работе с очень большими наборами данных.

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

Рекомендации

Подробнее об этом можно прочитать здесь.

Вы можете сослаться на полные коды для вышеуказанных проблем здесь!





Посмотрите мое портфолио!



Спасибо! Удачного обучения :)