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.
java öğretici
- 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:
ikili ağaç posta siparişi geçişi
- 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.
Pythonfrom 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('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5])
Çıkış:
Veri kümesi yükleniyorBazen 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:
Shell betiğini çalıştırılabilir hale getirme
- 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.
Pythonfrom 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ı.
Pythonprint('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 ŞekliAdı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]
nbsp
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.
if else if else javaPython
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]]
Pythonsample = [[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.