DEV Community

Ertugrul
Ertugrul

Posted on • Edited on

Makine Öğrenimi Algoritmaları Karşılaştırması: KNN vs SVM vs Karar Ağacı

🇬🇧 English version


🔄 Neyi Karşılaştıracağız?

Bu yazıda üç popüler denetimli öğrenme algoritmasını karşılaştırıyoruz:

  • K-En Yakın Komşu (KNN)
  • Destek Vektör Makineleri (SVM)
  • Karar Ağacı (DT)

Aşağıdaki metrikler üzerinden değerlendirme yapılacak:

  • Doğruluk (Accuracy)
  • Makro Ortalama Metrikleri (Precision, Recall, F1)
  • Ağırlıklı Ortalama Metrikleri (Precision, Recall, F1)

🔹 Veri Seti: Cam Tanımlama

Klasik Glass Identification dataset kullanılıyor:

  • 214 Satır
  • 10 Sütun: Kırılma indeksi + 8 kimyasal bileşen + Cam türü
import pandas as pd
csv = pd.read_csv("glass.csv")
print(csv.columns)
Enter fullscreen mode Exit fullscreen mode

🔍 Özellikler

  • RI (Kırılma İndeksi)
  • Na, Mg, Al, Si, K, Ca, Ba, Fe (Kimyasal elementler)
  • Type (Hedef sınıf)

🌐 Algoritmaları Öğrenmek İçin Kaynaklar

Teorik tanımlar yerine, her algoritma için görsel + makale kaynakları sunuyorum:

🔢 KNN:

KNN

🌳 Karar Ağacı:

DT

⚖️ SVM:

SVM


📅 Proje Yapısı

.
├📄 glass.csv           <- Veri seti
├🗋 Dt.py              <- Decision Tree class'ı
├🗋 KNN.py             <- KNN class'ı
├🗋 SVM.py             <- SVM class'ı
├🗋 tools.py           <- Görselleştirme araçları
├🗋 db.py              <- Veri kontrol dosyası
└🗋 main.py            <- Ana çalıştırıcı
Enter fullscreen mode Exit fullscreen mode

📈 Veri Hazırlama

Her sınıf aşağıdaki ortak fonksiyonu içerir:

x_train, x_test, y_train, y_test = model.data_preprocces()
Enter fullscreen mode Exit fullscreen mode

Adımlar:

  1. CSV'yi oku
  2. Son sütunu kaldırarak X verisini al
  3. Son sütunu y (etiket) olarak ata
  4. Veriyi %80 eğitim / %20 test olarak böl

Destekleyen dosyalar: Dt.py, KNN.py, SVM.py


💡 Model Entegrasyonu

Her sınıf, aşağıdaki seçeneklere sahip bir predict_report() fonksiyonu içerir:

  • 0: Tahmin sonuçlarını döndürür
  • 1: Doğruluğu döndürür
  • 2: Confusion matrix döndürür
  • 3: Sınıflandırma raporu (dict) döndürür

🌿 Görselleştirme Araçları

tools.py modülü ile metrikleri matplotlib kullanarak çizebilirsiniz:

Tools.Acc_table(report_list)
Tools.macro_prec(report_list)
Tools.macro_recall(report_list)
Tools.macro_f1(report_list)
Tools.wei_prec(report_list)
Tools.wei_recall(report_list)
Tools.wei_f1(report_list)
Enter fullscreen mode Exit fullscreen mode

Bu fonksiyonlar metrikleri hem grafik olarak gösterir, hem de terminale yazar.

Veri örneği


📊 Karşılaştırma Sonuçları

✔ Doğruluk

Acc
Kazanan: Decision Tree

🌱 Makro Ortalama Precision

Macro Prec
Kazanan: Decision Tree

📊 Makro Ortalama Recall

Macro Recall
Kazanan: Decision Tree

📊 Makro Ortalama F1

Macro F1
Kazanan: Decision Tree

📊 Ağırlıklı Ortalama Precision

Weighted Prec
Kazanan: Decision Tree

📊 Ağırlıklı Ortalama Recall

Weighted Recall
Kazanan: Decision Tree

📊 Ağırlıklı Ortalama F1

Weighted F1
Kazanan: Decision Tree


🔹 Sonuç

Decision Tree, bu veri seti üzerinde hem KNN hem de SVM'den daha başarılı sonuçlar veriyor.

Bu, her zaman DT'nin en iyisi olduğu anlamına gelmez; ancak Cam Türü tespiti gibi bir senaryoda, herhangi bir hiperparametre ayarı yapmadan bile DT öne çıkıyor.


📆 Kendin Dene

Tüm kaynak koda buradan ulaşabilirsiniz:

Kod yapısı modüler halindedir, bu sayede:

  • Veri setini değiştirebilir
  • Yeni modeller ekleyebilir
  • Grafik ve analizleri genişletebilirsiniz

✨ Repoyu Yıldızla

Eğer bu proje size faydalı olduysa, GitHub'da yıldız vererek destek olabilirsiniz:

🌟 GitHub - Ertugrulmutlu/Machine_Learning_Alg_Comp

Okuduğunuz için teşekkür ederim! 🚀

Top comments (0)