Lazy Predict Library

Kardelen Erdem
Machine Learning Turkiye
4 min readJul 28, 2022

Bugün sizlere tanıtmak istediğim kütüphaneyi tek bir cümle ile ifade etmem gerekse sanırım ‘Sen yeter ki hayal et, bütün modeller kurulur!’ olurdu. Çünkü Lazy Predict kütüphanesi tam olarak bu işlev için yazılmış. Gelin konuya hemen girmeden kısa bir başlangıç yapalım. Daha sonra ise yazımızı bir proje ile taçlandırıp kütüphaneye hayran kalalım :)

Yazıya başlamadan projeye ulaşmak için.

Makine öğrenmesi çalışmalarında başarının neredeyse %70’si veriyi iyi tanımaktan geçer. Veriyi iyi tanımanın yolu ise istatistik bilgisiyle doğru orantılıdır. İstatistiksel bilgisi yeterli düzeyde olan bir veri bilimci veri ön işleme adımlarını titizlikle yaparak kuracağı modelin başarısını yüksek oranda artırabilir.

Veri hazırlığından sonraki adım ise veri yapısına uygun olabilecek modellerin seçilmesi ve bu modellere hiperparametre ayarlaması yaparak en iyi modele ulaşabilmektir. Veri yapısına uygun olabilecek modeller söyleminden de anlaşıldığı gibi her makine öğrenmesi modeli her veri setine uygun değildir.

Örneğin elimizde cinsiyet, eğitim düzeyi, engel durumu, medeni durum, yaş ve maaş değişkenlerinden oluşan bir veri seti olduğunu hayal edelim. Burada girdi (bağımsız) değişkenlerimiz cinsiyet, eğitim düzeyi, engel durumu, medeni durum, yaş iken çıktı/tahmin(bağımlı) değişkenimizi maaş olarak tanımlarız.

Tahmin değişkenine baktığımızda ilk aklımıza gelen regresyon modeli kurmak olacaktır. Ancak hangi regresyon modelinin veri seti için daha iyi sonuç vereceğini bulabilmek için, lineer regresyon, lasso regresyon, ridge regresyon, random forest regressor, catboost regressor, XGBoost regressor, LGBM regressor … gibi çok fazla model denememiz gerekir. Bu modellerin
algoritmalarına ve istatistiksel yapısına çok hakim olmayan kişiler hangi veri setlerinde hangi modellerin başarılı olabileceğini bilmedikleri için tüm modelleri denemeleri gerekebilir. Bu denemeler küçük veri setleri için uygulanabilir gibi görünse de büyük çaplı veri setleri için oldukça maliyetli olacaktır. Ayrıca tüm modeller için ayrı ayrı kod yazmak zor gelebilir.
Yine aynı örnek üzerinden devam edecek olursak ilk aşamada problem tanımını regresyon olarak belirledikten sonra bağımsız değişkenlerin çoğunluğunun kategorik değişkenlerden oluştuğunu görüyoruz. Bu sebeple yüksek başarı sağlayabilecek modeller arasında ilk seçenek olarak lineer
regresyonun değil CatBoost Regressor’un daha iyi olabileceği söyleyebiliriz.

Peki kısıtlı zamanımız varsa, veri bilimine yeni başladıysak ya da tüm modelleri teker teker kodlamak istemiyorsak ne yapmalıyız?

Bugün sizlere tam bu sorunları çözecek güzel bir kütüphaneden bahsedeceğim.
Lazy Prediction kütüphanesini kullanarak sklearn kütüphanesinde bulunan modellerin tamamını tek satır kod ile çalıştırıp hata metrikleri ile birlikte gözlemleyebiliyoruz. Sonrasında ise yapmamız gereken tek şey en iyi sonuç veren 3–5–7 modele hiperparametre ayarı yaparak en iyi sonuç veren modeli
bulmak.

Gelin hızlıca bir proje üzerinden inceleyelim.

Ben bu projede Kaggle’dan aldığım supermarket satışlarını içeren veri seti üzerinde çalıştım. Veriye ulaşmak için tıklayabilirsiniz.

Hızlıca önemli olan kodları sizinle paylaşarak çıktıları üzerinde konuşalım.

pip install lazypredictimport lazypredictfrom lazypredict.Supervised import LazyRegressorreg = LazyRegressor(verbose=0,ignore_warnings=False, custom_metric=None )models,predictions = reg.fit(X_train, X_test, y_train, y_test)
Kurulan 42 model arasından 24 model gösterilmektedir.

Yukarıdaki görsel incelendiğinde regresyon modellerini karşılaştırmada kullanılacak skorların ve tüm modellerin özet tablosu görülmektedir. Lazy Prediction kütüphanesini kullanarak tek satır kod ile 42 model çıktısına özet halinde ulaşmış olduk.

Kurulan modellerin R2 değerleri incelendiğinde ise kurulan hiçbir modelin bağımsız değişkenlerinin bağımlı değişkendeki değişimi açıklamadığını görüyoruz. Daha iyi bir model kurabilmek için veri setine önce kümeleme analizi yapıp daha sonra model kurmayı deneyelim.

from yellowbrick.cluster import KElbowVisualizerkmeans = KMeans()visualizer = KElbowVisualizer(kmeans, k=(2,30))visualizer.fit(data)visualizer.poof()kmeans = KMeans(n_clusters = 7).fit(data)kumeler = kmeans.labels_kmeans_predict= kmeans.fit_predict(data)kmeans_Data= pd.DataFrame(data)kmeans_Data['Clusters']=kumelerkmeans_Data.head(15)X=kmeans_Data[['Store_Area',  'Items_Available',  'Daily_Customer_Count','Clusters']]y=kmeans_Data['Store_Sales']from sklearn.model_selection import train_test_split, cross_val_scoreX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.20, random_state=42)reg_cluster = LazyRegressor(verbose=0,ignore_warnings=False, custom_metric=None )models_cluster,predictions_cluster = reg_cluster.fit(X_train, X_test, y_train, y_test)

Yapılan kümeleme analizinden sonra modellerin R2 skorları incelendiğinde bağımlı değişkendeki değişimin açıklanma yüzdesinin 0.01'den 0.95'e çıktığını görüyoruz. Bundan sonraki adımda ilk 5 model kullanılarak hiperparametre ayarlaması üzerinde çalışabiliriz.

Böylelikle Lazy Prediction kütüphanesini kullanarak tek satır kod ile 42 farklı model kurup bu modelleri karşılaştırma imkanımız oldu.

Umarım yazı sizler için faydalı olmuştur :)

Herkese İyi Çalışmalar :)

Daha fazla yazı için Web Sitemi ziyaret edebilirsiniz

Diğer Yazılarımı Okumak İsterseniz;

--

--