Modellemeyi PyCaret’a Bırak Arkana Yaslan !

Şule Akçay
5 min readDec 9, 2022

--

https://www.educative.io/blog/pycaret-machine-learning

Herkese merhaba ! Sizlere bu yazımda PyCaret’ı tanıtacağım. Gerçekten insanlar durmuyor. Ürettikçe üretiyorlar. Üreten ve bunları bizlerle paylaşan kişilere teşekkür ederim…

Sizlere PyCaret’ı bir uygulama üstünden tanıtmanın çok daha faydalı olduğuna inanıyorum. Öncesinde kısaca PyCaret hakkında bilgi edinelim.

PyCaret Nedir ?

PyCaret , Python’da makine öğrenimi iş akışlarını otomatikleştiren open source bir kütüphanedir. Yani siz verinize PyCaret aracılığı ile veri ön işleme adımlarını gerçekleştirip sonrasında ise çok fazla yorulmadan makine öğrenmesi algoritmalarıyla tahminleme işlemini gerçekleştirebilirsiniz. Üstelik arkada işin bir çoğunu PyCaret kendisi üstleniyor. PyCaret, temel olarak scikit-learn, XGBoost, LightGBM, CatBoost, spaCy, Optuna, Hyperopt, Ray ve birkaç tane daha gibi çeşitli makine öğrenimi kitaplıklarını içinde barındırıyor. Kullanımı ve anlaması oldukça basit. Hız konusunda rakiplerine fark atıyor…

PyCaret’ i GPU üzerinde de kullanabilir ve akışınızı 10 kata hızlandırabilirsiniz. Yapmanız gereken tek şey parametre olarak “use_gpu=True” eklemek olacaktır. Üstelik kod yapısında herhangi bir değişiklik yok.

PyCaret içinde birçok modül barınıdırıyor. Üstelik bir güzel haber MLOps işlevleri için MLflow ile entegre olması.

PyCaret ön veri ile alakalı birçok kapsamlı yapıyı kapsıyor. Aşağıdaki örnekte gördüğüniz gibi. Detaylı incelemek isterseniz linke tıklamanız yeterli.

https://pycaret.gitbook.io/docs/get-started/preprocessing

Haydi gelin PyCaret’i kodlarla tanıyalım. :)

Kullanacağımız genel veri seti hakkında kısa bilgiler.

İş Problemini Anlama

Veriler, Portekizde’ki bir bankacılık kurumunun doğrudan pazarlama kampanyalarıyla ilgilidir.

Pazarlama kampanyaları telefon aramalarına dayanıyordu. Çoğu zaman, ürüne (banka vadeli mevduat) abone olunacağına (veya abone olunmayacağına) erişmek için aynı müşteriyle birden fazla iletişim gerekiyordu.

İş hedefi, müşterinin bir vadeli mevduata abone olup olmayacağını tahmin etmektir. (musteri_abone_mi değişkeni)

Kütüphaneyi Yükle ve Ekle

#!pip install pycaret
import pandas as pd
from pycaret.classification import *
train = pd.read_csv("bank.csv", sep=';')
train.head()
train.info()

Yukarıda veri setimizi yükledik ve genel gözlemleri yaptık. Şimde ise setup() fonksiyonu ile veri ön işleme adımlarını gerçekleştireceğiz.Tüm veri ön işleme adımları setup() içinde uygulanır .Veriyi train_size parametresi ile train, test set setini 80'e 20 olacak şekilde ayırmış olduk.

dff = setup(data = train, target = 'musteri_abone_mi', 
normalize=True,
train_size=0.80,
numeric_imputation = "mean",
categorical_imputation = "constant")

Aşağıdaki çıktıda verinin yapısı ile alakalı bilgileri görmekteyiz. Bu bilgiler train, test adedi kategorik ve numerik değişken adedi, target verisi gibi birçok bilgiyi kapsamaktadır. Session id değişkeni ise rassalığı sağlayan değişken değerini barındırmaktadır.

Modelleri Karşılaştırın

compare_models ile birçok modeli başarı değerlerini görüntüleyerek birbirleri arasında kolayca karşılaştırma işlemi gerçekleştirebiliriz.

Başarı metrikleri sınıflandırma ve regresyon problemleri için değişkenlik göstermektedir.

  • For Classification: Accuracy, AUC, Recall, Precision, F1, Kappa
  • For Regression: MAE, MSE, RMSE, R2, RMSLE, MAPE
best_model  = compare_models(sort='AUC')

📍Not :Tablo AUC değerine göre artandan azalana göre sıralanmıştır.

📍Not : Metrikler, default olarak 10 katlı çapraz doğrulama kullanılarak değerlendirilirken. Fold parametresini kullanarak bu değeri değiştirebilirsiniz.

print(best_model)

best_model ile en iyi modelin parametrelerinin çıktısını gözlemlekteyiz.

best_model  = compare_models(n_select  =  5)

En iyi 5 modelin karşılaştırılması

Model Oluşturun

PyCaret ile model oluşturmak için creat_model fonksiyonunu kullanmak yeterilidir. Linear Discriminant Analysis modelini 5 katlı çapraz doğrulamadan geçirdik.

df_Ida = create_model('lda', fold = 5)
rf = create_model('rf', round = 2)

Yeni bir model oluştururarak virgülden sonra iki basamağını aldık.

Tune Model

Tune model, bir makine öğrenmesi modelinin hiperparametrelerini otomatik ayarlamak için kullanılır.

tuned_rf  =  tune_model ( rf ,  optimize  =  'AUC' )

plot_model fonksiyonu ile confusion_matrix yapısını oluşturuyoruz.

plot_model(tuned_rf, plot = 'confusion_matrix')

Yukarıda çıktımızı gözlemlediğimiz üzere 140 adet yanlış tespitimiz bulunmaktadır.

16 adet gerçek negatif, 5 adet ise yanlış negatiftir.

plot_model(tuned_rf, plot = 'parameter')

Ensemble Model

ensemble_modeli eğitilmiş modelleri birleştirmek için kullanılır.

dt  =  create_model ( 'dt' )
boosted_dt = ensemble_model(dt, method = 'Boosting')

Plot Model

Eğitilmiş bir makine öğrenmesi modelinin performans değerlendirmesi için plot_model fonksiyonu kullanılır.

plot_model(rf, plot = 'auc')
evaluate_model(rf)

evaluate_model harika bir işev tüm çıktıları tek bir işlev aracılığı ile gözlemleyebiliyorsunuz.

Bir sonraki yazımda görüşmek üzere kendinize iyi bakın. :)

Kaynakça

https://machinelearningmastery.com/pycaret-for-machine-learning/

--

--