Giriş: KNN Nedir ve Neden Kullanılır?
K-Nearest Neighbors (KNN) algoritması, özellikle gözetimli öğrenme alanında sıkça kullanılan bir makine öğrenimi yöntemidir. KNN, sınıflandırma ve regresyon problemlerini çözmekte etkili bir yol sunar. Bu algoritmanın temel prensibi, yeni bir örneği sınıflandırmak için, eğitim kümesindeki en yakın K komşusunun sınıfına başvurmaktır. Hem basit yapısı hem de yüksek performansı sayesinde, KNN, hem yeni başlayanlar hem de deneyimli veri bilimcileri için sıkça tercih edilen bir yöntemdir.
KNN algoritmasında, uzaklık ölçütü genellikle Euclidean mesafesi olarak kullanılsa da, Manhattan, Minkowski gibi farklı mesafe ölçütleri de tercih edilebilir. Ayrıca, K değeri (komşu sayısı) dikkatlice seçilmelidir; çok küçük bir K değeri, modelin gürültüye karşı hassas olmasına sebep olurken, çok büyük bir değer ise aşırı genelleme yapma riskini artırır.
Bu makalede, KNN algoritmasının Python’da nasıl kullanılacağını uygulamalı örneklerle inceleyeceğiz. Özellikle SciKit-Learn kütüphanesi üzerinden KNN ile tahmin yapma adımlarını detaylı bir şekilde ele alacağız.
KNN Algoritması Nasıl Çalışır?
KNN algoritması, yeni bir verinin tahmin edilmesinde aşağıdaki adımları izler:
- Adım 1: Eğitim verisinde K değerini belirleyin. K değeri, kaç komşunun dikkate alınacağını belirtir.
- Adım 2: Uzaklık ölçümünü seçin. KNN algoritmasında genellikle Euclidean mesafesi kullanılır, ancak diğer mesafe ölçütleri de tercih edilebilir.
- Adım 3: Yeni bir veri noktasını sınıflandırmak için, eğitim verisindeki en yakın K komşusunu bulmak için mesafeleri hesaplayın.
- Adım 4: En yakın K komşusunun sınıf etiketlerini inceleyin ve yeni veri noktasının en çok oyu alan komşu sınıfına atanacak şekilde karar verin.
KNN algoritmasının temelindeki en önemli unsur, verilerin kalitesidir. Eğitim verisinde yüksek kaliteli ve temsili örnekler bulunması, modelin tahmin başarısını artıracaktır. Ayrıca, KNN algoritması, büyük veri setlerinde yavaş çalışabilir çünkü her tahmin için tüm eğitim verisi üzerinden geçilmesi gerekir.
Python’da KNN ile Tahmin Yapma
Python programlama dilinde KNN algoritmasını uygularken genellikle SciKit-Learn kütüphanesinden faydalanırız. Bu kütüphane, makine öğrenimi modellerini kolay bir şekilde kurmak, eğitmek ve test etmek için kapsamlı araçlar sunar. Şimdi adım adım KNN algoritması ile tahmin yapmayı inceleyelim.
1. Gerekli Kütüphaneleri Yükleme
Öncelikle gerekli kütüphaneleri yüklemeliyiz. SciKit-Learn dışında veri işlemek için NumPy ve veri setimizi verimle incelemek için Pandas kullanmamız gerekecek. Aşağıdaki kod parçacığında gerekli kütüphaneleri yükleyeceğiz:
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 accuracy_score, classification_report
Bu kodda, NumPy ve Pandas kütüphanelerini veri işleme için, `train_test_split` fonksiyonunu veri kümesini eğitim ve test setlerine ayırmak için, KNeighborsClassifier sınıfını KNN algoritmasını uygulamak için, ve `accuracy_score` ile `classification_report` fonksiyonlarını model performansını değerlendirmek için kullanıyoruz.
2. Veri Setinin Yüklenmesi ve Hazırlanması
Bir veri seti yükleyelim ve inceleyelim. Örneğin, İris veri setini kullanarak çiçek türlerini sınıflandırmayı hedefleyelim. İris veri seti, çiçeklerin 4 farklı özelliği ile birlikte 3 türünü içermektedir:
# Veri setini yükleyelim
data = pd.read_csv('iris.csv') # CSV dosyasının yolu
print(data.head()) # İlk 5 satırı göstermek
Yukarıdaki kod, veri setimizi yüklüyor ve ilk 5 satırını görmemizi sağlıyor. Şimdi bu veri setini eğitim ve test setlerine ayırmamız gerekiyor. Bunun için `train_test_split` fonksiyonunu kullanıyoruz:
X = data.drop('species', axis=1) # Özellikler
Y = data['species'] # Etiketler
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
Burada, verimizi özellikler (X) ve etiketler (Y) olarak ayırdık, ardından bunu eğitim ve test setlerine %80 eğitim, %20 test olacak şekilde böldük.
3. KNN Modelinin Oluşturulması ve Eğitilmesi
KNN modelimizi oluşturmak için `KNeighborsClassifier` sınıfını kullanacağız. K değerini belirlemek, modelin performansı için kritik bir adımdır. Genellikle K değerini 3 veya 5 olarak seçmek, uygun bir başlangıç noktasıdır:
knn = KNeighborsClassifier(n_neighbors=3) # K değeri 3
knn.fit(X_train, Y_train) # Modeli eğitmek
Burada `KNeighborsClassifier` sınıfını kullanarak bir KNN modeli oluşturduk ve eğitim verisiyle eğittik. Modelimiz artık yeni verileri tahmin etmeye hazır.
Modelin Test Edilmesi ve Sonuçların Değerlendirilmesi
Model eğitildikten sonra, test verisi ile modelimizi test etmemiz gerekiyor. Bunun için `predict` metodunu kullanarak test verileri üzerinde tahminler yapacağız:
y_pred = knn.predict(X_test) # Test seti üzerinde tahminler
Tahminlerimizi aldığımızda, modelimizin başarısını değerlendirmemiz önemlidir. Modelin doğruluğunu ölçmek için `accuracy_score` ve daha detaylı bir rapor almak için `classification_report` fonksiyonlarını kullanabiliriz:
accuracy = accuracy_score(Y_test, y_pred) # Doğruluk oranı
print(f'Modelin doğruluğu: {accuracy * 100:.2f}%')
print(classification_report(Y_test, y_pred)) # Sınıflama raporu
Bu adımda, modelin doğru tahmin yüzdesini görecek ve her sınıf için precision, recall ve F1-score gibi detaylı metrikler ile modelimizin performansını inceleyeceğiz.
Özelleştirme ve İyileştirme İpuçları
KNN algoritması ile tahmin videoyken, bazı özelleştirme ve iyileştirme yöntemlerini de dikkate alabiliriz:
- K Değerinin Seçimi: K değeri, modelin önemli bir parametresidir. K değerini artırmak, daha az gürültüye neden olmasını sağlasa da, bazı durumlarda da modelin hassasiyetini kaybetmesine yol açabilir. K değerinin farklılarını deneyerek bir validasyon setinde en iyi performansı bulmak önemlidir.
- Mesafe Ölçütlerinin Seçimi: KNN’de mesafe ölçütü olarak Euclidean dışındaki alternatifler de denenebilir. Hangi mesafe ölçütünün daha uygun olduğunu belirlemek için farklı senaryolar üzerinden test yapılmalıdır.
- Öznitelik Seçimi ve Ölçekleme: Özelliklerin doğru seçimi model başarısını etkiler. Ayrıca özelliklerin ölçeklenmesi (örneğin, Min-Max normalizasyonu) da model performansını artıracaktır.
Bunlar, modelin performansını artırmaya yönelik adımlardan sadece birkaçı. KNN algoritması genellikle en optimal hale getirilerek belirli veriler üzerinde daha etkili hale getirilebilir.
Sonuç
KNN algoritması, basit ama güçlü bir makine öğrenimi tekniği olarak, Python programlama dili ile uygulandığında son derece etkili sonuçlar verebilir. Bu yazıda, Python ile KNN algoritması kullanarak nasıl tahmin yapıldığını, temel adımları ve modelin değerlendirilmesine dair örnekler sunduk. Veri bilinçli bir şekilde seçildiğinde ve uygun parametreler ayarlandığında, KNN algoritması veri analizi ve tahmin süreçlerinde büyük katkılar sağlayabilir.
Umarım bu rehber, KNN ile tahmin yapma konusunda size faydalı olmuştur. Şimdi, öğrendiğiniz bu bilgileri kendi projelerinizde uygulayarak daha derin bir deneyim kazanma fırsatını değerlendirin.
Daha fazla içerik ve Python ile ilgili eğitimler için bizi takip etmeyi unutmayın!