Python’da Destek Vektör Makineleri (SVC) Kullanımı

Destek Vektör Makineleri (SVC) Nedir?

Destek Vektör Makineleri, (SVC), denetimli öğrenme algoritmaları arasında en popüler olanlardan biridir ve genellikle sınıflandırma problemleri için kullanılır. SVC, veri noktalarını, sınıf sınırlarını belirleyerek yüksek boyutlu bir uzayda ayırmak üzere tasarlanmıştır. Bu yöntem, verileri ikili sınıflara ayırmak için en iyi uygun hiper düzlemi bulmaya çalışır ve bu düzlemin maksimum marjini sağlaması hedeflenir. Bu sayede, modelin genel performansı artırılır ve overfitting riski en aza indirilir.

SVC modeli, verinin doğrusal olarak ayrılmadığı durumlarda da etkili olabilen kernel trick olarak adlandırılan bir teknikle çalışır. Kernel fonksiyonları, veriyi daha yüksek bir boyuta, adeta bir özellik uzayına, dönüştürerek karmaşık sınıflandırma sorunlarını çözmemizi sağlar. Örneğin, polinomial veya radyal temel fonksiyonu (RBF) kernel kullanılabilir. Bu, SVC’nin esnekliğini artırır ve daha karmaşık verilerle başa çıkmasını kolaylaştırır.

Python’da SVC Kullanımı

Python’da SVC kullanmanın en yaygın yolu, Scikit-learn kütüphanesini kullanmaktır. Scikit-learn, makine öğrenimi için basit ve etkili araçlar sağlamanın yanı sıra, veri ön işleme, modelleme ve değerlendirme konularında geniş bir fonksiyon yelpazesi sunmaktadır. Özellikle SVC kullanırken birkaç adım izlemeniz gerekiyor: veri setinizi oluşturmak, verinizi ön işlemek, modeli eğitmek ve ardından modelinizin performansını değerlendirmek.

İlk olarak, gerekli kütüphaneleri ve veri setini içe aktaralım. Örneğin, Iris veri seti çok tercih edilen ve uygun bir başlangıç noktasıdır:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix

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

Altta yer alan kod parçasında, Iris veri setine erişmek için gerekli olan kütüphaneleri ekledik ve veri setini X (özellikler) ve y (etiketler) olarak ayırdık. Şimdi verimizi eğitim ve test veri setlerine bölelim:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Bölme işleminden sonra, verimizin standartlaştırılması gerekebilir ki bu da model performansını artırır. Aşağıdaki kod ile verimizi standardize edelim:

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

SVC Modelinin Eğitimi ve Değerlendirilmesi

Verimiz hazırlandıktan sonra, SVC modelimizi eğitmeye geçebiliriz. Bu süreç, verilerin sınıflarını öğrenmesi için modelin belirli bir süre boyunca eğitilmesi anlamına gelir. Aşağıdaki kod ile modelimizi tanımlayıp eğitelim:

model = SVC(kernel='linear')
model.fit(X_train, y_train)

Yukarıdaki kodda, ‘linear’ kernel ile SVC modelimizi tanımladık ve ardından eğitim veri setimizle eğittik. Model eğitildikten sonra, test veri setimiz üzerinden tahminler yapabiliriz:

y_pred = model.predict(X_test)

Modelimizin tahminlerini aldıktan sonra, modelin başarısını değerlendirmek için çeşitli metrikler kullanabiliriz. Örneğin, karmaşıklık matrisini ve sınıflandırma raporunu inceleyelim:

print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

İleri Düzey Özellikler ve İpuçları

SVC ile çalışırken, parametre ayarlamaları ve farklı kernel seçenekleri denemek modelinizin performansını artırabilir. Örneğin, C parametresi, modelin marjını dengelemekte önemli bir role sahiptir. Küçük bir C değeri, daha geniş bir marj sağlarken, büyük bir C değeri, hatalı sınıflandırmalara yönelik toleransı azaltır. Ayrıca, gamma parametresi de kernel detayını belirleyerek modelin karmaşıklığını etkiler.

model = SVC(kernel='rbf', C=1.0, gamma=0.5)
model.fit(X_train, y_train)

Daha karmaşık veri setleriyle çalışırken, modelinizin hiperparametrelerini sistematik bir şekilde ayarlamak için GridSearchCV gibi yöntemler kullanabilirsiniz. Bu yöntem, farklı parametre kombinasyonlarını deneyerek en iyi sonuçları elde etmeye çalışır:

from sklearn.model_selection import GridSearchCV

param_grid = {'C': [0.1, 1, 10], 'gamma': [0.1, 0.5, 1]}
grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=2)
grid.fit(X_train, y_train)

Son olarak, modelinizin genel doğruluğunu artırmak için verilerinizi doğru bir şekilde ön işleyip modelinizi dikkatlice eğitmek önemlidir. Uygun özellik mühendisliği uygulamaları ve veri temizleme süreçleri, modelinizin başarısını doğrudan etkileyebilir.

Sonuç

Python’da Destek Vektör Makineleri (SVC), etkili bir makine öğrenimi algoritmasıdır ve iyi yapılandırıldığında oldukça yüksek başarımlara ulaşabilir. Scikit-learn kullanarak SVC modelini kurmak, eğitmek ve değerlendirmek görece basit bir süreçtir, ancak doğru sonuçlar almak için verinin hazırlanması ve parametre ayarlamaları oldukça önemlidir.

Bu yazıda SVC’nin temellerinden başlayarak, veri seti ile modelin eğitilmesi, değerlendirilmesi ve iyileştirilmesi üzerine temel bilgiler sağladık. Makine öğrenimi süreçlerinizde SVC’yi kullanarak veri analizi projelerinize büyük katkılar sağlayabilirsiniz. Kendi projelerinizde SVC uygulamaları gerçekleştirmek için bu bilgileri kullanmanızı ve farklı veri setleriyle denemeler yapmanızı öneririm!

Unutmayın ki, pratik yaparak ve kendi verileriniz üzerinde deneyimler elde ederek, çok daha iyi bir anlayışa sahip olabilirsiniz. SVC ile ilgili daha fazla bilgiye ve kaynaklara ulaşmak için Scikit-learn belgelerini incelemeyi unutmayın.

Scroll to Top