müfettiş
Moderatör
- Katılım
- 20 Ocak 2024
- Mesajlar
- 325
- Tepkime puanı
- 1
- Puanları
- 18
Veri bilimi ve yapay zeka dünyasına adım atarken, teorik bilgileri pratiğe dökmenin en etkili yolu Python'ın en popüler kütüphanelerinden biri olan Scikit-Learn (sklearn) ile tanışmaktır. Bu kütüphane, karmaşık matematiksel algoritmaları son derece basit, tutarlı ve anlaşılır bir arayüzle sunarak model geliştirme sürecini standartlaştırır.
İlk modelinizi eğitmek, sadece birkaç satır kod yazmaktan ibaret değildir; bu, verinin ham halden işlenmiş bir tahmine dönüşme yolculuğudur.
Özellik (Feature) ve Hedef (Target):
Scikit-Learn ile yolculuğunuzun başındasınız. Bu kütüphanenin derinliklerine indikçe, hiperparametre optimizasyonu ve topluluk öğrenmesi (Ensemble Learning) gibi çok daha güçlü tekniklerle karşılaşacaksınız.
İlk modelinizi eğitmek, sadece birkaç satır kod yazmaktan ibaret değildir; bu, verinin ham halden işlenmiş bir tahmine dönüşme yolculuğudur.
Scikit-Learn Nedir?
Scikit-Learn; veri madenciliği ve veri analizi için geliştirilmiş, NumPy, SciPy ve Matplotlib üzerine inşa edilmiş açık kaynaklı bir kütüphanedir. Regresyon, sınıflandırma, kümeleme ve boyut indirgeme gibi temel makine öğrenmesi görevlerinin tamamını kapsar. En büyük avantajı, "Estimator" (Tahminleyici) yapısı sayesinde farklı algoritmaların (örneğin Karar Ağaçları veya Destek Vektör Makineleri) aynı kod dizilimiyle çalıştırılabilmesidir.Makine Öğrenmesi İş Akışı (Pipeline)
Bir makine öğrenmesi modeli geliştirirken takip edilen standart bir "boru hattı" vardır. Bu akış, hatasız ve bilimsel olarak geçerli bir sonuç elde etmenizi sağlar.1. Veriyi Hazırlama ve Keşfetme
Modelin başarısı, ona verdiğiniz verinin kalitesine bağlıdır. İlk adımda verideki eksiklikleri gidermeli ve kategorik verileri (metinleri) sayısal değerlere dönüştürmelisiniz.Özellik (Feature) ve Hedef (Target):
- X (Özellikler): Tahmin yapmak için kullanılan girdiler (Örn: Bir evin metrekaresi, oda sayısı).
- y (Hedef): Tahmin edilmek istenen değer (Örn: Evin fiyatı).
2. Veriyi Eğitim ve Test Olarak Ayırma
Modelin daha önce hiç görmediği veriler üzerinde nasıl performans sergileyeceğini bilmemiz gerekir. Bu yüzden veriyi genellikle %80 eğitim, %20 test olacak şekilde ikiye böleriz. Scikit-Learn içindeki train_test_split fonksiyonu bu işi saniyeler içinde yapar.Uygulama: İlk Sınıflandırma Modeliniz
Gelin, klasik bir örnek olan "Iris Çiçek Veri Seti" üzerinden bir sınıflandırma modeli kurgulayalım. Amacımız, çiçeğin çanak ve taç yaprak uzunluklarına bakarak hangi türe ait olduğunu tahmin etmek.Adım 1: Kütüphaneleri ve Veriyi Yükleme
Kod:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# Veriyi yükleyelim
iris = load_iris()
X, y = iris.data, iris.target
Adım 2: Veriyi Bölme
Veriyi bölmek, modelin "ezberlemesini" (overfitting) engelleyip gerçekten "öğrenip öğrenmediğini" test etmemizi sağlar.
Kod:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Adım 3: Model Seçimi ve Eğitimi
Burada K-En Yakın Komşu (K-Nearest Neighbors) algoritmasını seçiyoruz. Bu algoritma, yeni bir veri geldiğinde ona en yakın olan eski verilere bakar ve "Sen onlara benziyorsun, o zaman bu sınıftansın" der.
Kod:
# Modeli tanımla
model = KNeighborsClassifier(n_neighbors=3)
# Modeli eğit (Fit)
model.fit(X_train, y_train)
Adım 4: Tahmin ve Değerlendirme
Model eğitildikten sonra, ayırdığımız test verilerini modele sorarız.
Kod:
# Tahmin yap
y_pred = model.predict(X_test)
# Başarı oranını hesapla
accuracy = accuracy_score(y_test, y_pred)
print(f"Modelin Doğruluk Oranı: %{accuracy * 100}")
Model Başarısını Ölçmek: Sadece "Doğruluk" Yeterli mi?
Doğruluk (Accuracy) oranı bazen yanıltıcı olabilir. Örneğin, 100 hastanın 99'unun sağlıklı olduğu bir veri setinde model herkese "sağlıklı" derse %99 başarı yakalar ama aslında kanserli olan 1 kişiyi kaçırmış olur. Bu yüzden şu metrikler de hayati önem taşır:- Precision (Kesinlik): Model "pozitif" dediğinde ne kadar haklı?
- Recall (Duyarlılık): Gerçekten pozitif olanların ne kadarını yakalayabildi?
- Confusion Matrix (Karmaşıklık Matrisi): Modelin hangi sınıfları birbiriyle karıştırdığını gösteren tablodur.
Dikkat Edilmesi Gereken Kritik Noktalar
- Ölçeklendirme (Scaling): Bazı algoritmalar, veriler arasındaki sayısal farklara çok duyarlıdır. Örneğin bir sütun 0-1 arasındayken diğeri 10.000-100.000 arasındaysa, model büyük sayılara odaklanır. StandardScaler kullanarak tüm verileri benzer bir teraziye getirmelisiniz.
- Aşırı Öğrenme (Overfitting): Model eğitim verisini o kadar iyi ezberler ki, yeni bir veri geldiğinde çuvallar. Bunu önlemek için model karmaşıklığını optimize etmek gerekir.
- Rastgelelik (Random State): Kodunuzdaki random_state parametresi, verinin her seferinde aynı şekilde bölünmesini sağlar. Bu, çalışmalarınızın tekrarlanabilir (reproducible) olması için önemlidir.
Gelecek Adımlar: Modelinizi Canlıya Almak
İlk modelinizi eğittikten sonra, bu modeli bir web sitesine veya mobil uygulamaya entegre etmek isteyebilirsiniz. Bunun için joblib veya pickle kütüphanelerini kullanarak eğittiğiniz modeli bir dosya olarak kaydedebilir ve istediğiniz her yerde tekrar yükleyip tahmin yaptırabilirsiniz.
Kod:
import joblib
joblib.dump(model, 'ilk_modelim.pkl')
Scikit-Learn ile yolculuğunuzun başındasınız. Bu kütüphanenin derinliklerine indikçe, hiperparametre optimizasyonu ve topluluk öğrenmesi (Ensemble Learning) gibi çok daha güçlü tekniklerle karşılaşacaksınız.