Lazy Predict kütüphanesi, Python'da kullanıcı tarafından verilen veri kümesine göre birçok makine öğrenimi algoritmasını otomatik olarak test eder ve sonuçları bir tablo şeklinde görüntüler.
Bu kütüphane, bir dizi sınıflandırma ve regresyon algoritması için varsayılan hiperparametreler kullanarak, model performansını hızlı bir şekilde test etmek ve hangi algoritmanın veri kümesi için en iyi performansı gösterdiğini belirlemek için kullanılabilir. Bu, daha gelişmiş bir hiperparametre ayarlaması yapmak için iyi bir başlangıç noktası olabilir.
Lazy Predict kütüphanesini pip aracılığıyla yükleyebiliriz.
pip install lazypredict
Aşağıdaki kod Lazy Predict kütüphanesinin kullanımına bir örnektir
from lazypredict.Supervised import LazyClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
data = load_digits()
X = data.data
y= data.target
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=.3,random_state =12)
clf = LazyClassifier(verbose=0,ignore_warnings=True, custom_metric=None)
models,predictions = clf.fit(X_train, X_test, y_train, y_test)
print(models)
Kodun çıktısı aşağıdaki gibidir
100%|█████████████████████████████████████████████████████████████████| 29/29 [00:03<00:00, 7.60it/s]
Accuracy Balanced Accuracy ROC AUC F1 Score \
Model
ExtraTreesClassifier 0.98 0.98 None 0.98
SVC 0.98 0.98 None 0.98
RandomForestClassifier 0.97 0.97 None 0.97
LGBMClassifier 0.97 0.97 None 0.97
LogisticRegression 0.97 0.97 None 0.97
XGBClassifier 0.96 0.96 None 0.96
KNeighborsClassifier 0.96 0.96 None 0.96
CalibratedClassifierCV 0.96 0.96 None 0.96
LinearSVC 0.95 0.95 None 0.95
PassiveAggressiveClassifier 0.95 0.95 None 0.95
SGDClassifier 0.94 0.94 None 0.95
LinearDiscriminantAnalysis 0.94 0.94 None 0.94
NuSVC 0.94 0.94 None 0.94
LabelSpreading 0.94 0.94 None 0.94
LabelPropagation 0.94 0.94 None 0.94
Perceptron 0.94 0.94 None 0.94
RidgeClassifierCV 0.93 0.93 None 0.93
RidgeClassifier 0.93 0.93 None 0.93
BaggingClassifier 0.91 0.91 None 0.91
NearestCentroid 0.88 0.88 None 0.88
BernoulliNB 0.88 0.88 None 0.88
QuadraticDiscriminantAnalysis 0.83 0.84 None 0.82
DecisionTreeClassifier 0.84 0.84 None 0.84
GaussianNB 0.79 0.79 None 0.79
ExtraTreeClassifier 0.77 0.77 None 0.77
AdaBoostClassifier 0.30 0.33 None 0.22
DummyClassifier 0.09 0.10 None 0.01
Time Taken
Model
ExtraTreesClassifier 0.21
SVC 0.09
RandomForestClassifier 0.30
LGBMClassifier 0.66
LogisticRegression 0.13
XGBClassifier 0.43
KNeighborsClassifier 0.05
CalibratedClassifierCV 0.63
LinearSVC 0.14
PassiveAggressiveClassifier 0.05
SGDClassifier 0.05
LinearDiscriminantAnalysis 0.04
NuSVC 0.18
LabelSpreading 0.14
LabelPropagation 0.16
Perceptron 0.03
RidgeClassifierCV 0.04
RidgeClassifier 0.01
BaggingClassifier 0.13
NearestCentroid 0.02
BernoulliNB 0.01
QuadraticDiscriminantAnalysis 0.05
DecisionTreeClassifier 0.02
GaussianNB 0.02
ExtraTreeClassifier 0.01
AdaBoostClassifier 0.22
DummyClassifier 0.01
"KNeighborsClassifier" için sonucu test edebiliriz
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
# Veri kümesini yükle
digits = load_digits()
# Verileri ve hedef değişkeni (etiketleri) ayır
X = digits.data
y = digits.target
# Eğitim ve test setlerini ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=12)
# KNeighborsClassifier sınıfını kullanarak bir sınıflandırıcı oluştur
knn = KNeighborsClassifier(n_neighbors=3)
# Sınıflandırıcıyı eğit
knn.fit(X_train, y_train)
# Test seti üzerinde tahmin yap
y_pred = knn.predict(X_test)
# Doğruluk oranını hesapla
accuracy = knn.score(X_test, y_test)
# Sonuçları yazdır
# print("Tahminler:", y_pred)
# print("Gerçek Değerler:", y_test)
print("Doğruluk Oranı:", accuracy)
Kodun çıktısı aşağıdaki gibidir. Bu sonuç yuvarlandığında "lazypredict" ile aynı değere sahiptir. Karşılaştırma yaparken test_size ve random_state değerlerinin aynı olmasına dikkat edilmelidir.
Doğruluk Oranı: 0.9851851851851852
Veri kümesi büyük ve yüksek boyutlu olduğunda veya özel bir makine öğrenimi algoritması kullanmanız gerektiğinde Lazy Predict kullanımı sınırlı olabilir. Aşağıdaki kodda "fashion mnist" dataset i kullanılmıştır. GPU kullanılmadığı için sınırlı sayıda örneklem ile kod çalıştırılmaktadır. Aksi takdirde kodun çalışması çok çok uzun sürebilir .
Bu tür durumlarda tüm modellerin değilde belirli modellerin ölçümü yapılabilir. Bunun için LazyClassifier'in "classifiers" özelliği kullanılacaktır.
import tensorflow as tf
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from lazypredict.Supervised import LazyClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import AdaBoostClassifier
# Load Fashion-MNIST dataset
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
# Select first 1000 images
x_train = x_train[:1000]
y_train = y_train[:1000]
x_test = x_test[:1000]
y_test = y_test[:1000]
# Flatten images to 1D array
x_train = x_train.reshape((x_train.shape[0], -1))
x_test = x_test.reshape((x_test.shape[0], -1))
# Split dataset into train and test sets
x_train, x_val, y_train, y_val = train_test_split(x_train, y_train, test_size=0.2, random_state=42)
# Normalize data
scaler = StandardScaler()
x_train = scaler.fit_transform(x_train)
x_val = scaler.transform(x_val)
x_test = scaler.transform(x_test)
# Define the models you want to test
classifiers = [LogisticRegression,AdaBoostClassifier, KNeighborsClassifier, RandomForestClassifier]
# Initialize LazyClassifier with classifiers parameter
#clf = LazyClassifier(verbose=0, ignore_warnings=True, custom_metric=None)
clf = LazyClassifier(verbose=0, ignore_warnings=True, custom_metric=None, classifiers =classifiers)
# Fit and train the model
models, predictions = clf.fit(x_train, x_val, y_train, y_val)
# Print the performance summary of the models
print(models)
Kodun çıktısı aşağıdaki gibidir
100%|█████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.31it/s]
Accuracy Balanced Accuracy ROC AUC F1 Score \
Model
RandomForestClassifier 0.83 0.83 None 0.82
LogisticRegression 0.78 0.77 None 0.77
KNeighborsClassifier 0.73 0.73 None 0.73
AdaBoostClassifier 0.22 0.20 None 0.10
Time Taken
Model
RandomForestClassifier 0.92
LogisticRegression 0.25
KNeighborsClassifier 0.08
AdaBoostClassifier 1.82