Skip to content

Gulnaz-Aydemir/Machine-Learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KNN ile Görüntü Sınıflandırma (MNIST Digits)

Python Colab Numpy Sklearn Matplotlib Seaborn

Bu proje, Makine Öğrenmesi dersi kapsamında, K-En Yakın Komşuluk (KNN) algoritmasının sıfırdan (knn_classifier.py) implemente edilmesini ve Scikit-learn kütüphanesindeki MNIST Digitsveri seti üzerinde test edilmesini içermektedir.

Tüm deneyler, yerel kurulum sorunlarını aşmak için Google Colab üzerinde çalıştırılmıştır.

📂 Proje Yapısı

🚀 Implementasyon Detayları (knn_classifier.py)

Sıfırdan kodlanan KNNClassifier sınıfı, bir KNN modelinin temel fonksiyonlarını içerir :

  • fit(X, y): KNN "tembel öğrenen" bir algoritma olduğu için, bu fonksiyon sadece eğitim verisini ve etiketlerini hafızaya alır.
  • compute_distances(X): L1 (Manhattan) ve L2 (Euclidean)mesafe metriklerini destekler.
  • predict(X): Her test örneği için en yakın 'k' komşuyu bulur ve collections.Counter kullanarak bir "çoğunluk oylaması" (majority voting) yapar.
  • score(X, y): Modelin doğruluk (accuracy) skorunu hesaplar.

📊 Deneysel Sonuçlar ve Analiz

main.ipynb dosyasında çalıştırılan deneylerin sonuçları aşağıdadır.

Görev 1.2: Temel Test (k=3, L2)

Model, k=3 ve L2 metriği ile test edildiğinde %98.61 doğruluk elde etmiştir.

Karmaşıklık Matrisi (Confusion Matrix): Modelin '8' rakamını 3 kez '1' olarak ve '9' rakamını 1 kez '1' olarak karıştırdığı görülmektedir. Confusion Matrix

Örnek Tahminler: Rastgele seçilen 10 örnekten 9'u doğru (yeşil), 1'i yanlış (kırmızı) tahmin edilmiştir. Sample Predictions

Görev 1.3a: K Değeri Analizi (L2)

L2 metriği için en iyi doğruluk (%98.61) k=1 ve k=3 değerlerinde elde edilmiştir. k değeri arttıkça modelin fazla genelleme (underfitting) yaptığı ve doğruluğun düştüğü gözlemlenmiştir.

K-Value Analysis

Görev 1.3b: Mesafe Metriği Karşılaştırması

Tüm deneydeki en yüksek tekil skor (%98.89), L1 (Manhattan) metriği ile k=5 değerinde elde edilmiştir. Ancak genel olarak L2 metriğinin daha geniş bir k aralığında daha istikrarlı sonuçlar verdiği görülmektedir.

Distance Comparison

Bölüm 2: Sklearn Karşılaştırması

Kendi implementasyonumuz, scikit-learn kütüphanesi ile doğruluk ve hız bakımından karşılaştırılmıştır.

  • Doğruluk: Her iki model de %98.61 accuracy alarak kendi kodumuzun mantıksal olarak doğru çalıştığını kanıtlamıştır.
  • Hız: Optimize edilmiş scikit-learn kütüphanesi (0.0818s), saf Python döngüleri kullanan kendi kodumuzdan (0.1867s) yaklaşık 2.3 kat daha hızlı çalışmıştır.
Kriter Sklearn KNN Kendi KNN'imiz
Accuracy 0.9861 0.9861
Çalışma Süresi (s) 0.0818 0.1867

⚙️ Nasıl Çalıştırılır (Colab)

  1. Google Colab'da yeni bir not defteri açın.
  2. Sol paneldeki "Dosyalar" (🗂️) sekmesinden knn_classifier.py dosyasını yükleyin.
  3. main.ipynb dosyasını Colab'a yükleyin (File > Upload notebook).
  4. Tüm hücreleri sırayla çalıştırın (Runtime > Run all).

About

Bu projede, K-En Yakın Komşuluk (KNN) algoritması Python ile sıfırdan kodlandı ve MNIST el yazısı rakam veri seti üzerinde eğitilerek performansı test edildi. Modelimizin doğruluğu, farklı 'k' değerleri ile L1/L2 mesafe metriklerinin etkileri analiz edilerek ve %98.89'luk zirve skoruyla Scikit-learn kütüphanesi sonuçlarıyla karşılaştırıldı.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors