K-Fold Cross Validation ile KNN Uygulaması: Adım Adım Rehber

K-Fold Cross Validation Nedir?

K-Fold Cross Validation (K-Fold Çarpraz Doğrulama), makine öğrenimi modelinin performansını değerlendirmek için kullanılan etkili bir tekniktir. Bu yöntem, verileri K tane alt gruba (katmana) ayırarak başlar. Ardından, model her bir alt grubu test seti olarak kullanırken, kalan K-1 alt grubu eğitim seti olarak kullanılır. Bu süreç K defa tekrarlanır ve her seferinde farklı bir alt grup test seti yapılır. Sonuç olarak, her bir çalışmanın performansı hesaplanır ve bir ortalama alınarak modelin genel başarısı değerlendirilir.

K-Fold Cross Validation, modelin aşırı öğrenmesini önlemede oldukça etkilidir. Verilerinizin tamamını eğitim seti olarak kullanmak yerine, bu yöntemle verilerinizi daha verimli ve dengeli bir şekilde kullanarak modelin doğruluğunu artırabilirsiniz. Özellikle sınırlı veri setlerine sahip olduğunuz durumlarda bu yöntem, sonuçlarınızı daha güvenilir hale getirebilir.

Ayrıca, K-Fold Cross Validation uygularken, verinin rastgele karıştırılması ve farklı katmanlarla tekrar değerlendirme yapmamız, modelin genel performansını daha iyi anlamamıza yardımcı olur. Modelin her defasında farklı veri parçaları ile test edilmesi, gerçek dünya verileri ile karşılaşacakları konulardaki tahmin becerilerini anlamada önemlidir.

KNN (K En Yakın Komşu) Nedir?

KNN, yani K En Yakın Komşu algoritması, denetimli öğrenme tekniklerinden biridir ve sınıflandırma problemleri için yaygın olarak kullanılır. KNN, örnekleri öz niteliklerine göre sınıflandırma yapmak yerine, komşu olan verilerin sınıf özniteliklerine bakarak karar verir. Algoritmanın temel prensibi, bilinmeyen bir örneğin bulunduğu sınıfı belirlemek için onun en yakın K komşususunu kullanmaktır.

Bu algoritmanın en büyük avantajı, model eğitimi gerektirmemesi ve dolayısıyla kullanımı oldukça kolay olmasıdır. Ancak, KNN’in bazı dezavantajları da vardır. Bunlar arasında yüksek hesaplama maliyeti ve bellek kullanımı sayılabilir, çünkü algoritma tüm eğitim setini hafızasında tutar.

KNN, sınıflandırma dışında regresyon problemlerinde de kullanılabilir. Özellikle küçük veri setleri ve az sayıda öznitelik ile çalışılması durumunda başarılı sonuçlar elde edilebilir; bununla birlikte, büyük veri setlerinde performansı düşebilir.

K-Fold Cross Validation ile KNN Uygulaması

Şimdi, K-Fold Cross Validation kullanarak KNN algoritmasını nasıl uygulayacağımıza bakalım. Öncelikle birkaç kütüphaneye ihtiyacımız olacak. Python’da bu işlemi gerçekleştirmek için NumPy, Pandas ve Scikit-learn kütüphanelerini kullanacağız. Bu kütüphaneler veri analizindeki en popüler araçlardan bazılarıdır.

İlk olarak, gerekli kütüphaneleri kurarak başlayalım:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, KFold
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

Burada, Iris veri setini kullanarak KNN modelimizi geliştireceğiz. Bu veri seti, farklı çiçek türlerinin ölçümlerini içerir ve sınıflandırma problemleri üzerinde çalışmak için mükemmel bir örnektir. Örnek veri setine göz atmak için şu kodu çalıştırabilirsiniz:

iris = load_iris()
X, y = iris.data, iris.target

X, veri setindeki özellikleri (özellik matrisini) temsil ederken, y, her bir örneğin ait olduğu sınıfı (etiketleri) temsil eder. Şimdi K-Fold Cross Validation uygulamamıza başlayabiliriz.

K-Fold Uygulama Adımları

1. **K-Fold Yaratma:** İlk olarak, KFold sınıfını kullanarak K katmanını tanımlamalıyız. Örneğin, K=5 katmanlı bir senaryo için aşağıdaki kodu kullanabiliriz:

kf = KFold(n_splits=5, shuffle=True, random_state=42)

Burada, n_splits, kaç katmanımıza ayrılacağını belirler. Ayrıca verimizin karıştırılmasını sağlamak için shuffle parametresini True olarak ayarladık. Bu, her çalıştırmada sonuçların doğruluğunu artıracaktır.

2. **Modeli Uygulama:** Şimdi KNN modelimizi oluşturalım ve K-Fold döngüsünde her bir eğitim ve test setinde modeli değerlendirip sonuçları kaydedelim:

accuracy_scores = []
for train_index, test_index in kf.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]

    model = KNeighborsClassifier(n_neighbors=3)
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    accuracy_scores.append(accuracy)

3. **Sonuçları Değerlendirme:** Son olarak, elde ettiğimiz doğruluk skoru listesine bakarak modelimizin ortalama doğruluğunu hesaplayabiliriz:

average_accuracy = np.mean(accuracy_scores)
print(f'Ortalama Doğruluk: {average_accuracy:.2f}')

Bu adımlar, K-Fold Cross Validation kullanarak KNN modelimizi başarıyla geliştirmiş ve sonuçlarını değerlendirmiş olacaktır. Bu süreç, modelinizin genelleme yeteneğini anlamanız için oldukça değerlidir.

Sonuç ve İpuçları

K-Fold Cross Validation, model performansını değerlendirmede çok yararlıdır ve her durumda kesinlikle uygulanmalıdır. Özellikle KNN gibi basit ama etkili algoritmalarla bir araya geldiğinde, sonuçların güvenilirliğini artırır. Yukarıda örneklediğimiz yöntemi farklı veri kümesi ve algoritmalarla uygulayarak deneyimlerinizi geliştirebilirsiniz.

Modelinizi geliştirirken, K parametresini değiştirerek farklı sonuçlar elde edebilir, daha iyi bir model için parametre ayarlamaları yapabilirsiniz. KNN algoritması için K’nin değerini seçerken, küçük bir K, gürültüye karşı hassas olabilir fakat çok büyük bir K değeri de genelleme gücünü azaltabilir. Bu dengenin iyi ayarlanması gerekmektedir.

Ayrıca, farklı performans metriklerini kullanarak modelinizin başarısını daha iyi değerlendirebilirsiniz. Doğruluk, F1 skoru, recall ve precision gibi metrikler, farklı bakış açıları sunar ve sonuçlarınızı yorumlamanızı kolaylaştırabilir. K-Fold Cross Validation ile deneyim kazandıkça, modelleme süreçlerinizi daha da geliştirebilir, Python’la ilgili ilerlemenizi kaydedebilirsiniz.

Scroll to Top