KNN Sınıflandırıcısı ile Python Örneği

KNN Sınıflandırıcı Nedir?

KNN (K-Nearest Neighbors), makine öğrenmesinde yaygın olarak kullanılan bir sınıflandırma ve regresyon algoritmasıdır. Bu algoritma, bir veri noktasını sınıflandırırken, o noktaya en yakın K adet komşusunun sınıf bilgilerine bakarak karar verir. KNN, basit bir yapıya sahip olmasına rağmen, genellikle etkili sonuçlar verebilir; bu nedenle veri madenciliği ve makine öğrenmesi projelerinde sıkça tercih edilir.

Temel prensibi, benzerlik ölçütüdür ve sınıflandırma işlemi için bir mesafe metriği kullanır. En yaygın mesafe ölçütü, Öklidyen mesafesidir. Ancak Manhattan, Minkowski gibi diğer mesafe ölçütleri de kullanılabilir. Bu basit ama güçlü algoritmanın avantajlarından biri, eğitimi gerektirmemesidir; tüm eğitim verileri, sınıflandırma sürecinde kullanılır.

KNN algoritmasının dezavantajları arasında, büyük veri setleriyle çalışırken yüksek hesaplama maliyetleri ve sınıf dengesizliği durumları için düşük performans gösterebilmesi yer almaktadır. Ancak, doğru parametreler ile uygun bir ön işleme adımı ile bu dezavantajlar minimize edilebilir.

KNN Kullanım Alanları

KNN, çok sayıda farklı alanda kullanılmaktadır. Özellikle, sınıflandırmanın önemli olduğu durumlarda tercih edilir. Örneğin, yüz tanıma sistemleri, metin sınıflandırma, öneri sistemleri ve genetik genom analizi gibi uygulamalarda sıklıkla kullanılır. Özellikle veri yoğun, heterojen ve özelliklerin karmaşık olduğu alanlarda KNN, iyi bir başlangıç noktası olarak değerlendirilebilir.

Bir başka örnek olarak sınıflandırma modeli kurulması için gerekli olan temel özelliklerin belirlenmesi, kredi risk analizi, tıbbi teşhis ve müşteri segmentasyonu gibi alanlarda da kullanılmaktadır. Özellikle tıbbi alanda, belirli bir hastalığı, belirtiler ve hastanın geçmişi üzerinden tahmin etmek için KNN gibi algoritmalar sıklıkla tercih edilir.

Son olarak, KNN algoritması, veri kümesine eklenen yeni gözlemler karşısında dinamik bir yapıda çalışması ile de avantaj sağlar. Yani, modelin yeniden eğitilmesine ihtiyaç duymadan yeni verilerle güncellenmesi mümkündür; bu da KNN’yi gerçek zamanlı sistemler için ideal hale getirir.

Python ile KNN Sınıflandırıcı Uygulaması

Python, KNN sınıflandırıcısı uygulamak için çok sayıda kütüphaneye ve araca sahiptir. Bu kısımda, KNN sınıflandırıcısını Python kullanarak nasıl uygulayabileceğinizi adım adım inceleyeceğiz. İlk olarak, gereken kütüphaneleri projeye dahil etmemiz gerekiyor. Bu örnekte, Scikit-learn kütüphanesini kullanacağız. Scikit-learn, makine öğrenimi için yaygın bir kütüphanedir ve KNN dahil birçok algoritmayı içerir.

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix

Bir veri kümesi ile çalışarak KNN uygulamasına başlayacağız. Örneğin, Iris veri setini kullanabiliriz. Iris veri seti, makine öğrenimi uygulamalarında temel bir test veri setidir ve üç farklı Iris çiçeğini sınıflandırma problemini içerir.

from sklearn.datasets import load_iris
iris = load_iris()
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
data['target'] = iris.target

İlk adımda veri kümesini yükledikten sonra, özelliklerimizi ve hedefimizi ayırmamız gerekecek. Özellikler, çiçeğin uzunluk ve genişlik değerleridir; hedef ise çiçeğin türünü temsil eden bir sayıdır.

X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values

Daha sonra, veri kümemizi eğitim ve test setleri olarak ikiye bölelim. Eğitim seti, modelimizi oluşturmak için kullanılırken, test seti modelimizin doğruluğunu değerlendirmek için kullanılacaktır. Genellikle, veri kümesinin %70’i eğitim için, %30’u ise test için ayrılır.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

Artık eğitim setimiz hazır. Şimdi KNN modelimizi tanımlayıp eğitim verileri ile eğitmemiz gerekiyor. KNN’nin en önemli parametresi K’dır, yani komşu sayısı. K değerini seçerken dikkatli olmak gerekir; çok düşük bir K değeri aşırı uyum (overfitting) yaparken, çok yüksek bir K değeri ise modelin genel performansını düşürebilir. Bu yüzden K değerini dikkatlice seçmek önemlidir.

knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)

Modelimiz artık eğitildi. Şimdi, test setimiz üzerinde tahminlerde bulunabiliriz. Modelimizi test seti ile değerlendirerek sonuçları görebiliriz.

y_pred = knn.predict(X_test)
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

Sonuç olarak, modelimizin doğruluğunu görmek için karmaşa matrisini ve sınıflandırma raporunu yazdırıyoruz. Bu rapor, modelimizin her sınıf için ne kadar doğru tahminde bulunduğunu gösterir ve modelin başarı oranını değerlendirmenize yardımcı olur.

Sonuç ve İleri Düzey Uygulamalar

KNN sınıflandırıcısı, makine öğrenimi uygulamalarının temel taşlarından biridir. Python ile KNN uygulamak oldukça kolay ve esnektir. Elimizdeki veriler ile farklı senaryolar üzerinde deney yapabilir ve KNN algoritmasının nasıl çalıştığını anlayabiliriz.

Modelimizi daha da geliştirmek için K değerini optimize edebilir, farklı mesafe ölçütlerini deneyebilir ve daha büyük veri setleri ile çalışarak performansını artırabiliriz. Ayrıca, özellik mühendisliği yaparak modelin başarısını artırabiliriz. Bu bağlamda verinin ön işlenmesi, nagatif ve pozitif sınıfların dengelenmesi gibi adımlar oldukça önemlidir.

Son olarak, KNN algoritmasının yalnızca sınıflandırma için değil, aynı zamanda regresyon problemlerinde de kullanılabileceğini unutmayalım. KNN ile regresyon uygulamaları, yeni veri noktalarının tahminlerini yaparken K komşunun ortalaması ile gerçekleşir. Bu yönü ile KNN, farklı problemleri çözmek için son derece esnek bir algoritmadır.

Scroll to Top