Sıfırdan Sınıflandırma Modeli: Scikit-learn ile İlk Projeniz

Sınıflandırma, makine öğrenmesinin en temel görevlerinden biri. Bir veriyi önceden tanımlanmış kategorilerden birine atamak demek. Scikit-learn kütüphanesi bunu çok kolaylaştırıyor. Hadi basit bir örnek üzerinden başlayalım.

Örnek olarak, çiçek türlerini tahmin etmek için ünlü Iris veri setini kullanacağız. Sepal ve petal ölçülerine göre çiçek türünü belirleyeceğiz.

1import numpy as np
2from sklearn.datasets import load_iris
3from sklearn.model_selection import train_test_split
4from sklearn.ensemble import RandomForestClassifier
5from sklearn.metrics import accuracy_score, classification_report
6
7# Veriyi yükle
8iris = load_iris()
9X = iris.data
10y = iris.target
11
12# Veriyi eğitim ve test setine böl
13X_train, X_test, y_train, y_test = train_test_split(
14X, y, test_size=0.2, random_state=42
15)
16
17# Modeli oluştur ve eğit
18model = RandomForestClassifier(n_estimators=100, random_state=42)
19model.fit(X_train, y_train)
20
21# Tahmin yap
22y_pred = model.predict(X_test)
23
24# Başarı oranını ölç
25accuracy = accuracy_score(y_test, y_pred)
26print(f"Doğruluk: {accuracy:.2%}")
27print("\nDetaylı Rapor:")
28print(classification_report(y_test, y_pred, target_names=iris.target_names))

Beklenen Çıktı:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1Doğruluk: 100.00%
2
3Detaylı Rapor:
4precision recall f1-score support
5
6setosa 1.00 1.00 1.00 10
7versicolor 1.00 1.00 1.00 10
8virginica 1.00 1.00 1.00 10

Kodun her adımı: Veriyi yüklü, 80-20 oranında eğitim-test setine ayırıyoruz. Random Forest sınıflandırıcısını 100 ağaçla eğitiyoruz. Son olarak test setinde tahmin yapıp doğruluk ölçüyoruz.

Yeni bir örnek tahmin etmek:

1# Yeni bir çiçek örneğini tahmin et
2new_sample = np.array([[5.1, 3.5, 1.4, 0.2]])
3prediction = model.predict(new_sample)
4print(f"Tahmin edilen tür: {iris.target_names[prediction[0]]}")

Sık yapılan hata: Veriyi normalize etmeden kullanmak. Özellikle farklı ölçeklerdeki verilerle çalışırken, StandardScaler ile normalleştirmeyi unutmayın. Ayrıca train_test_split'te random_state belirtmek sonuçları tekrarlanabilir kılar.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz
  • adlı kullanıcıya yanıt verdi
    joksdy
    @joksdy

    aynen iris sonrası titanic veri setiyle başlayabilir mesela gerçek bir probleme çalışmak çok daha farklı hissettiriyor özellikle eksik veriler ve temizleme işleri var ki iriste o yok

  • mertttttsvm

    sonra başka veri seti de eklenebilir bence iristen sonra gerçek bir problemle uğraşmak daha motivasyonu arttırır

  • eskiokur

    iris ile başlamak doğru aslında, basit ama işin mantığını anlatmak için yeterli.

  • siradanbiri

    iris veri seti klasik olmuş artık, herkes bununla başlıyor ama iyi yine de.