Scikit-learn'de Öğrenme Modeli Oluşturma
Scikit-learn, makine öğrenimi modelleri oluşturma sürecini basitleştiren açık kaynaklı bir Python kütüphanesidir. Hem yeni başlayanların hem de deneyimli kullanıcıların verimli çalışmasına yardımcı olan temiz ve tutarlı bir arayüz sunar.
- Sınıflandırma regresyon kümeleme ve ön işleme gibi görevleri destekler
- Model oluşturmayı hızlı ve güvenilir hale getirir
- Eğitim ve değerlendirme için kullanıma hazır araçlar sağlar
- Algoritmaların manuel olarak uygulanmasını önleyerek karmaşıklığı azaltır
Scikit-learn Kurulumu ve Kullanımı
Model oluşturmaya başlamadan önce yüklememiz gerekiyor Scikit-öğren. Python 3.8 veya daha yenisini gerektirir ve iki önemli kütüphaneye bağlıdır: NumPy Ve SciPy. Öncelikle bunların kurulduğundan emin olun.
Scikit-learn'ü kurmak için aşağıdaki komutu çalıştırın:
pip kurulumu -U scikit-learn
Bu, Scikit-learn'in en son sürümünü bağımlılıklarıyla birlikte indirip yükleyecektir. Scikit-learn kütüphanesini kullanarak Model oluşturma sürecindeki çeşitli adımları görelim.
1. Adım: Veri Kümesi Yükleme
Bir veri kümesi aşağıdakilerden oluşur:
- Özellikler (X): Verileri tanımlayan giriş değişkenleri
- Hedef (y): Tahmin etmek istediğimiz değer
Scikit-learn, Iris Digits ve Boston Housing gibi yerleşik veri kümeleri sağlar. Iris veri kümesini kullanma:
- load_iris() verileri yükler
- X özellik verilerini saklar
- hedef etiketleri saklar
- feature_names ve target_names açıklayıcı adlar verir
Yapıyı anlamak için ilk birkaç satırı inceleyebiliriz. Özel veri kümeleri için Pandalar genellikle CSV'ler gibi harici dosyaları yüklemek için kullanılır.
Python from sklearn.datasets import load_iris iris = load_iris () X = iris . data y = iris . target feature_names = iris . feature_names target_names = iris . target_names print ( 'Feature names:' feature_names ) print ( 'Target names:' target_names ) print ( ' n Type of X is:' type ( X )) print ( ' n First 5 rows of X: n ' X [: 5 ])
Çıkış:
Veri kümesi yükleniyor Bazen kendi özel verilerimiz üzerinde çalışmamız gerekir, ardından harici bir veri seti yükleriz. Bunun için şunu kullanabiliriz: pandalar kütüphanesi Veri kümelerinin kolay yüklenmesi ve işlenmesi için.
Bunun için yazımıza başvurabilirsiniz. Pandalarda csv dosyası nasıl içe aktarılır ?
Adım 2: Veri Kümesini Bölme
Bir modeli adil bir şekilde değerlendirmek için verileri aşağıdakilere ayırdık:
- Eğitim seti: Modeli eğitmek için kullanılır
- Test seti: Modelin ne kadar iyi genelleştirildiğini değerlendirmek için kullanılır
train_test_split kullanarak Iris veri kümesini %60'ı eğitim ve %40'ı test için olacak şekilde böldük (test_size=0,4). random_state=1 tekrarlanabilirliği sağlar.
Bölündükten sonra şunu elde ederiz:
- X_train y_train -> Eğitim verileri
- X_test y_test -> Verileri test etme
Şekillerin kontrol edilmesi verilerin doğru şekilde bölünmesini sağlar.
Python from sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split ( X y test_size = 0.4 random_state = 1 )
Şimdi kontrol edelim Şekiller Model değerlendirmesinde veya eğitiminde olası hataları önleyerek her iki kümenin de doğru veri oranlarına sahip olmasını sağlamak için Bölünmüş Verilerin kullanılması.
Python print ( 'X_train Shape:' X_train . shape ) print ( 'X_test Shape:' X_test . shape ) print ( 'Y_train Shape:' y_train . shape ) print ( 'Y_test Shape:' y_test . shape )
Çıkış:
Bölünmüş Verinin Şekli Adım 3: Kategorik Verileri İşleme
Makine öğrenimi algoritmaları sayısal girdilerle çalıştığından kategorik (metin) verilerin sayılara dönüştürülmesi gerekir. Düzgün kodlanmadığı takdirde modeller kategorileri yanlış yorumlayabilir. Scikit-learn birden fazla kodlama yöntemi sunar:
1. Etiket Kodlaması : Her kategoriyi benzersiz bir tam sayıya dönüştürür. Örneğin, 'kedi', 'köpek' ve 'kuş' gibi kategorilerin bulunduğu bir sütunda, bunları sırasıyla 0 1 ve 2'ye dönüştürür. Bu yöntem, kategoriler Düşük Orta ve Yüksek gibi anlamlı bir sıraya sahip olduğunda işe yarar.
- LabelEncoder(): Kategorik değerleri sayısal etiketlere dönüştürecek bir kodlayıcı nesnesi oluşturmak için başlatılır.
- fit_transform(): Bu yöntem önce kodlayıcıyı kategorik verilere uyarlar ve ardından kategorileri karşılık gelen sayısal etiketlere dönüştürür.
from sklearn.preprocessing import LabelEncoder categorical_feature = [ 'cat' 'dog' 'dog' 'cat' 'bird' ] encoder = LabelEncoder () encoded_feature = encoder . fit_transform ( categorical_feature ) print ( 'Encoded feature:' encoded_feature )
Çıkış:
Kodlanmış özellik: [1 2 2 1 0]
2. Tek Kullanımda Kodlama : One-Hot Encoding, her kategori için ayrı ikili sütunlar oluşturur. Bu, kategorilerin herhangi bir doğal sıralaması olmadığında kullanışlıdır. Örnek: kedi köpek kuş -> 1'ler ve 0'lardan oluşan 3 yeni sütun (kedi/köpek/kuş).
- Giriş 2 boyutlu bir dizi halinde yeniden şekillendirilmelidir
- OneHotEncoder(sparse_output=False) ikili sütunlar oluşturur
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = [ 'cat' 'dog' 'dog' 'cat' 'bird' ] categorical_feature = np . array ( categorical_feature ) . reshape ( - 1 1 ) encoder = OneHotEncoder ( sparse_output = False ) encoded_feature = encoder . fit_transform ( categorical_feature ) print ( 'OneHotEncoded feature: n ' encoded_feature )
Çıkış:
Etiket Kodlama ve Tek Sıcak Kodlamanın yanı sıra başka teknikler de vardır: Ortalama Kodlama .
Adım 4: Modeli Eğitmek
Artık verilerimiz hazır olduğuna göre bir makine öğrenimi modeli eğitmenin zamanı geldi. Scikit-learn, eğitim tahmini ve değerlendirmesi için tutarlı bir arayüze sahip birçok algoritmaya sahiptir. Burada kullanacağız Lojistik Regresyon örnek olarak.
Not : Yalnızca uygulanmasını anlamakla ilgilendiğimiz için algoritmanın nasıl çalıştığının ayrıntılarına girmeyeceğiz.
- log_reg = LojistikRegresyon(max_iter=200): Lojistik regresyon sınıflandırıcı nesnesi oluşturma.
- log_reg.fit(X_train y_train): Bunu kullanmak lojistik regresyon modeli, modelin parametrelerini verilere en iyi şekilde uyacak şekilde ayarlar.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression ( max_iter = 200 ) log_reg . fit ( X_train y_train )
Lojistik Regresyon Kullanarak Eğitim. Adım 5: Tahminlerde Bulunun
Eğitildikten sonra modeli, tahmin yöntemini çağırarak X_test test verileri üzerinde tahminler yapmak için kullanırız. Bu, tahmin edilen y_pred etiketlerini döndürür.
- log_reg.predict: Test verileri X_test'e ilişkin etiketleri tahmin etmek için eğitimli lojistik regresyon modelini kullanır.
y_pred = log_reg . predict ( X_test )
Adım 6: Model Doğruluğunu Değerlendirme
Y_test ve y_pred'i karşılaştırarak modelimizin ne kadar iyi performans gösterdiğini kontrol edin. Burada metrik modülünün doğruluk_score yöntemini kullanıyoruz.
Python from sklearn import metrics print ( 'Logistic Regression model accuracy:' metrics . accuracy_score ( y_test y_pred ))
Çıkış:
Lojistik Regresyon modeli doğruluğu: 0,9666666666666667
Artık modelimizin yeni örnek veriler üzerinden tahminlerde bulunmasını istiyoruz. Daha sonra örnek girdi, herhangi bir özellik matrisini ilettiğimiz gibi kolayca iletilebilir. Burada bunu örnek olarak kullandık = [[3 5 4 2] [2 3 5 4]]
Python sample = [[ 3 5 4 2 ] [ 2 3 5 4 ]] preds = log_reg . predict ( sample ) pred_species = [ iris . target_names [ p ] for p in preds ] print ( 'Predictions:' pred_species )
Çıkış:
Tahminler: [np.str_('virginica') np.str_('virginica')]
Scikit-learn'in özellikleri
Scikit-learn, makine öğrenimi modellerinin oluşturulmasını basit ve verimli hale getirdiği için kullanılır. İşte bazı önemli nedenler:
- Kullanıma Hazır Araçlar : Veri ön işleme eğitim modelleri ve tahminler yapma gibi ortak görevler için yerleşik işlevler sağlar. Bu, algoritmaları sıfırdan kodlama ihtiyacını ortadan kaldırarak zamandan tasarruf sağlar.
- Kolay Model Değerlendirmesi : Çapraz doğrulama ve performans ölçümleri gibi araçlarla modelimizin ne kadar iyi çalıştığını ölçmeye ve iyileştirilecek alanları belirlemeye yardımcı olur.
- Geniş Algoritma Desteği : Sorunumuz için doğru modeli seçme konusunda bize esneklik sağlayan sınıflandırma regresyonu ve kümeleme dahil olmak üzere birçok popüler makine öğrenimi algoritması sunar.
- Sorunsuz Entegrasyon : NumPy ve SciPy gibi önemli Python kitaplıklarının üzerine inşa edilmiştir, böylece mevcut veri analizi iş akışımıza uyar.
- Basit ve Tutarlı Arayüz : Farklı modellerde aynı basit söz dizimi çalışır, öğrenmeyi ve algoritmalar arasında geçiş yapmayı kolaylaştırır.
- Model Ayarlama Artık Kolaylaştı : Izgara araması gibi araçlar, ekstra zorluk yaşamadan doğruluğu artırmak için modelimizin ayarlarında ince ayar yapmamıza yardımcı olur.
Scikit-learn'i kullanmanın faydaları
- Kullanıcı dostu : Scikit-learn'ün tutarlı ve basit arayüzü, onu yeni başlayanlar için erişilebilir hale getirir ve uzmanlar için en iyisidir.
- Zaman kazandıran: Önceden oluşturulmuş araçlar ve algoritmalar, geliştirme süresini kısaltır ve bu da ayrıntıları kodlamaktan ziyade sorunları çözmeye odaklanmamızı sağlar.
- Daha İyi Model Performansı : Kullanımı kolay ayarlama ve değerlendirme araçları, model doğruluğunun ve güvenilirliğinin artırılmasına yardımcı olur.
- Esnek ve Ölçeklenebilir : Çok çeşitli algoritmaları destekler ve diğer Python kitaplıklarıyla sorunsuz bir şekilde bütünleşir, her boyuttaki projeye uygun hale getirilmesine yardımcı olur.
- Güçlü Topluluk Desteği : Büyük ve aktif bir topluluk, düzenli güncellemeler, kapsamlı belgeler ve sıkıştığımızda yardımcı olacak bol miktarda kaynak sağlar.