KNN Sınıflandırma Örneği ile Python’da Uygulamalı Rehber

KNN Nedir?

KNN (K En Yakın Komşu), makine öğrenimi dünyasında yaygın olarak kullanılan bir sınıflandırma algoritmasıdır. Temel prensibi, sınıflandırmak istediğimiz bir veri noktasının en yakın komşularına bakarak hangi sınıfa ait olduğunu tahmin etmektir. Bu algoritmanın en büyük avantajlarından biri, oldukça basit olması ve sonuçlarının genellikle tatmin edici olmasıdır.

KNN algoritması, eğitim verisi kümesindeki her bir veri noktasına göre, tahmin edilmesi gereken veri noktasının en yakın ‘k’ komşusunu bulur. Daha sonra, en yakın komşuların sınıfları arasında bir çoğunluk oylaması yapılarak tahmin edilen sınıf belirlenir. K değeri, belirlenecek komşu sayısını ifade eder ve model performansını olumlu veya olumsuz etkileyebilir.

KNN’nin temel özelliklerinden biri, modelin eğitimi sırasında hiçbir öğrenim işlemi gerçekleştirmemesidir. Bunun yerine, herhangi bir tahmin yapılırken tüm eğitim verisi kullanılır. Bu durum, KNN’yi hafif ancak büyük veri setleri için yavaş bir algoritma haline getirebilir.

KNN Kullanım Alanları

KNN algoritması, birçok uygulama alanına sahip . Özellikle, müşteri segmentasyonu, yüz tanıma, öneri sistemleri ve metin sınıflandırma gibi görevlerde kullanılmaktadır. Örneğin, e-ticaret siteleri, kullanıcılar arasındaki benzerlikleri bulmak ve ürün önerileri yapmak için KNN algoritmasını kullanabilir.

Ayrıca, KNN, doğal dil işleme alanında metin belgelerinin sınıflandırılması için sıklıkla tercih edilir. KNN, kullanıcıların bir belgenin hangi kategoride olduğunu anlamak için daha önce sınıflandırılmış belgeler arasındaki yakınlığı değerlendirir. Bu sayede kullanıcıların benzer içeriklere yönlendirilmesi sağlanır.

Sonuç olarak, KNN algoritması, çok sayıda uygulama için uygun olmasından dolayı geniş bir kullanım alanına sahiptir. Bunun yanı sıra, algoritmanın basitliği ve anlaşılabilirliği, yeni başlayanlar için de öğretici bir araç olmasını sağlar.

Python ile KNN Sınıflandırma Uygulaması

Python, KNN algoritmasını uygulamak için en uygun dillerden biridir. Scikit-learn, KNN dahil pek çok makine öğrenimi algoritması için kullanılan popüler bir Python kütüphanesidir. Bu kütüphane, KNN’yi kullanmayı oldukça basit hale getirir ve kullanıcıların KNN algoritmasını kısaca birkaç satır kodla uygulamasına olanak tanır.

Öncelikle, gerekli kütüphaneleri yüklememiz gerekiyor. Bunu yapmak için terminalde şu komutları kullanabilirsiniz:

pip install numpy pandas scikit-learn

Daha sonra, örnek bir veri kümesi oluşturup KNN algoritmasını uygulayalım:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# Iris veri setini yükle
iris = load_iris()
X = iris.data
y = iris.target

# Eğitim ve test setine ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# KNN modelini oluştur
knn = KNeighborsClassifier(n_neighbors=3)

# Modeli eğitim verisi ile eğit
knn.fit(X_train, y_train)

# Test verisi ile tahmin yap
predictions = knn.predict(X_test)

KNN Algoritmasının İncelenmesi

Kodda, öncelikle iris veri kümesini yüklüyoruz. Iris veri kümesi, makine öğrenimi uygulamalarında yaygın olarak kullanılan bir veri kümesidir. Bu veri kümesinde çiçeklerin özellikleri bulunmaktadır ve bu özelliklere dayanarak hangi çiçek türüne ait olduğu tahmin edilmeye çalışılmaktadır.

Veri kümesini yükledikten sonra, eğitim ve test setlerine ayırıyoruz. Yüzde 70 eğitim, yüzde 30 test verisi kullanıyoruz. Daha sonra, KNN sınıflandırıcımızı oluşturuyor ve modelin eğitim verisi ile eğitilmesini sağlıyoruz. Burada ‘n_neighbors’ parametresi, KNN algoritmasına hangi sayıda en yakın komşuyu dikkate alacağını belirtmektedir.

Son olarak, eğitimli modeli test verisi ile kullanarak tahminler yapıyoruz. Bu tahminler, test verisinden hangi çiçek türlerinin tahmin edildiğini gösterir.

KNN Sınıflandırma Sonuçlarının Değerlendirilmesi

KNN algoritması ile elde edilen sonuçların değerlendirilmesi, modelin ne kadar iyi çalıştığını anlamamıza yardımcı olur. Bunun için doğruluk, hassasiyet ve geri çağırma gibi metrikler kullanılır. Scikit-learn kütüphanesi, bu metrikleri hesaplamak için kullanışlı araçlar sunmaktadır.

from sklearn.metrics import accuracy_score, confusion_matrix

# Doğruluk oranını hesapla
accuracy = accuracy_score(y_test, predictions)
print(f'Doğruluk Oranı: {accuracy * 100:.2f}%')

# Karışıklık matrisini oluştur
conf_matrix = confusion_matrix(y_test, predictions)
print('Karışıklık Matris:
', conf_matrix)

Yukarıdaki kodda, kütüphaneden doğruluk oranı ve karışıklık matrisini hesaplamak için gereken fonksiyonları içe aktarıyoruz. Model tahminlerimizi karşılaştırarak doğruluk oranını hesaplıyoruz. Ayrıca, karışıklık matrisini alarak hangi sınıfların hangi sınıflara daha çok karıştığını görebiliriz.

Doğruluk oranı, modelin doğru tahmin sayısının toplam tahmin sayısına oranını gösterir. Karışıklık matrisinin analizi ise model performansını daha detaylı incelememizi sağlar ve hata paylarını belirlememize yardımcı olur.

Modelin İyileştirilmesi

KNN algoritmasında modelin doğruluğunu artırmak için birkaç yöntem vardır. Öncelikle, K değeri doğru bir şekilde seçilmelidir. K değeri eğitilmesi gereken verinin büyüklüğüne ve karmaşıklığına bağlı olarak değişir. Optimum K değerini bulmak için çapraz doğrulama (cross-validation) kullanabiliriz.

Ayrıca, veri ön işleme adımları da modelin performansını etkileyebilir. Özellikle, verinin ölçeklenmesi ve normalleştirilmesi, KNN algoritmasının daha iyi performans göstermesine yardımcı olabilir. Sklearn kütüphanesinde, StandardScaler ve MinMaxScaler gibi veri ölçeklendirme araçları bulunmaktadır.

Örneğin, verileri ölçeklendirmek için şu kodu kullanabilirsiniz:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Sonuç ve Öneriler

KNN algoritması, basit yapısı sayesinde yeni başlayanlar için idealdir. Python ile kolayca uygulayabileceğiniz KNN sınıflandırma örneği sayesinde makine öğrenimi dünyasına ilk adımınızı atabilir, temel kavramları öğrenebilirsiniz. Yine de, daha karmaşık veri setlerinde KNN yerine diğer algoritmaları da incelemenizi öneririm.

Son olarak, algoritmayı geliştirirken her zaman yeni teknikler, yöntemler ve uygulamalar araştırmayı unutmayın. KNN algoritmasını uygulamak, sadece makine öğrenimi konusundaki bilginizi artırmakla kalmaz, aynı zamanda veri bilimi alanında daha derinlemesine bilgi sahibi olmanıza yardımcı olur.

Okuyucularımın farklı projelerinde KNN algoritmasını denemelerini ve bu süreçte yaşadıkları deneyimleri paylaşmalarını teşvik ediyorum. Teknoloji dünyasında sürekli öğrenme döngüsünde ilerlemek, başarılı bir yazılım geliştirici olmanın anahtarıdır!

Scroll to Top