Bu proje, MATLAB'ın yerleşik fisheriris veri seti üzerinde K-En Yakın Komşu (KNN) algoritmasını sıfırdan (Statistics Toolbox kullanmadan) uygulayan bir makine öğrenmesi portfolyo çalışmasıdır. Amaç; veri ön işleme, el yapımı KNN ve görselleştirme adımlarını tek bir tutarlı proje içinde sunmaktır.
K-En Yakın Komşu (K-Nearest Neighbors), parametrik olmayan, tembelci (lazy) bir sınıflandırıcıdır. Eğitim aşamasında hiçbir model öğrenmez; tüm hesaplama tahmin anında yapılır.
Tahmin adımları:
- Test noktası ile tüm eğitim noktaları arasındaki Öklid mesafeleri hesaplanır.
- En yakın
kkomşu seçilir. - Bu komşular arasında hangi sınıf çoğunluktaysa o sınıf tahmin edilir (çoğunluk oylaması).
- Beraberlik durumunda en küçük sınıf indeksi seçilir.
k değerinin önemi: Küçük k aşırı öğrenmeye (overfitting), büyük k ise yetersiz öğrenmeye (underfitting) yol açabilir. Bu projede k = {1, 3, 5, 7, 9, 11} denenerek en iyi k seçilir.
| Dosya | Tür | Açıklama |
|---|---|---|
yukle_ve_isle.m |
Fonksiyon | Veri yükleme, etiket dönüşümü, stratified bölme, Min-Max normalizasyon |
knn_siniflandirici.m |
Fonksiyon | Sıfırdan KNN — vektörize Öklid mesafesi, çoğunluk oylaması |
main.m |
Betik | Tüm adımları çalıştırır, özet tabloyu yazdırır, 4 grafik üretir |
README.md |
Belge | Bu dosya |
Gereksinimler: MATLAB R2020b veya üzeri. Ek toolbox gerekmez.
Adımlar:
- MATLAB'ı açın.
- Bu klasörü (tüm
.mdosyalarının bulunduğu dizini) MATLAB çalışma dizini olarak ayarlayın:cd('<bu_klasörün_yolu>') - Komut penceresine aşağıdakini yazın ve Enter'a basın:
main - MATLAB konsola özet tabloyu yazdırır ve 4 grafik penceresi açılır.
Not:
main.mbir betik (script) olduğu içinrun('main.m')komutuyla da çalıştırılabilir.
=================================================================
Iris KNN Siniflandirma Sonuclari
=================================================================
K Test Dogrulugu (%) Hata Sayisi
-----------------------------------------------------------------
1 96.67 1
3 96.67 1
5 96.67 1 <-- en iyi
...
=================================================================
Her k değeri için test doğruluğunu gösteren çizgi grafiği. En iyi k altın yıldızla işaretlenir.
imagesc ile mavi tonlu ısı haritası. Her hücre gerçek/tahmin sınıf çiftinin örnek sayısını gösterir. Yüksek değerli hücrelerde beyaz, düşük değerli hücrelerde siyah yazı kullanılır.
Taç yaprak uzunluğu ve genişliği kullanılarak oluşturulan 2B karar sınırı. Arka plan rengi hangi bölgenin hangi sınıfa ait olduğunu gösterir; gerçek örnekler işaretçilerle üzerine çizilir.
| Renk | Sınıf |
|---|---|
| Mavi | Setosa |
| Kırmızı | Versicolor |
| Yeşil | Virginica |
4×4 alt grafik ızgarası. Köşegen: her sınıf için üst üste bindirme histogramı. Köşegen dışı: iki özelliğin birbirine karşı scatter grafiği, gerçek sınıf rengine göre boyalı.
- MATLAB versiyonu: R2020b ve üzeri (
sgtitle,bsxfunuyumluluğu için). - Toolbox bağımlılığı: Yoktur.
pdist,knnsearch,ClassificationKNNgibi Statistics and Machine Learning Toolbox fonksiyonları kullanılmamıştır. - Veri seti: MATLAB yerleşik
fisheriris— 150 örnek, 4 özellik, 3 sınıf (her sınıftan 50 örnek). - Normalizasyon: Min-Max; normalizasyon parametreleri yalnızca eğitim verisinden hesaplanır, test verisine uygulanır (data leakage yoktur).
- Bölme stratejisi: Her sınıftan eşit oranda (%80 eğitim / %20 test) stratified örnekleme;
rng(42)ile tekrarlanabilirlik sağlanır. - Mesafe hesabı:
||a − b||² = ||a||² + ||b||² − 2aᵀbaçılımıyla tüm test–eğitim mesafeleri tek matris çarpımında hesaplanır.