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 np2from sklearn.datasets import load_iris3from sklearn.model_selection import train_test_split4from sklearn.ensemble import RandomForestClassifier5from sklearn.metrics import accuracy_score, classification_report67# Veriyi yükle8iris = load_iris()9X = iris.data10y = iris.target1112# Veriyi eğitim ve test setine böl13X_train, X_test, y_train, y_test = train_test_split(14X, y, test_size=0.2, random_state=4215)1617# Modeli oluştur ve eğit18model = RandomForestClassifier(n_estimators=100, random_state=42)19model.fit(X_train, y_train)2021# Tahmin yap22y_pred = model.predict(X_test)2324# 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ı:
1Doğruluk: 100.00%23Detaylı Rapor:4precision recall f1-score support56setosa 1.00 1.00 1.00 107versicolor 1.00 1.00 1.00 108virginica 1.00 1.00 1.00 10Kodun 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 et2new_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.
4 yorum
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
sonra başka veri seti de eklenebilir bence iristen sonra gerçek bir problemle uğraşmak daha motivasyonu arttırır
iris ile başlamak doğru aslında, basit ama işin mantığını anlatmak için yeterli.
iris veri seti klasik olmuş artık, herkes bununla başlıyor ama iyi yine de.