Библиотека 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 может эффективно обрабатывать наборы данных среднего размера, но может столкнуться с проблемами производительности при работе с очень большими наборами данных.
Ленивый прогноз можно использовать для первоначальной оценки модели, сравнительного анализа и получения базового понимания производительности модели. Следовательно, мы можем попробовать его на ранних этапах исследования и выбора модели.
Рекомендации
Подробнее об этом можно прочитать здесь.
- https://lazypredict.readthedocs.io/en/latest/installation.html
- https://pypi.org/project/lazypredict/
- https://github.com/shankarpandala/lazypredict
Вы можете сослаться на полные коды для вышеуказанных проблем здесь!
Посмотрите мое портфолио!
Спасибо! Удачного обучения :)