Python ile SVM Grafiği Oluşturma

Destek vektör makineleri (SVM), makine öğrenmesi alanında güçlü bir sınıflandırma ve regresyon tekniğidir. Özellikle doğrusal ve doğrusal olmayan veri setleri üzerinde etkili sonuçlar elde eder. SVM’in teorik temellerini öğrendikten sonra, verilerinizi görselleştirmek için nasıl SVM grafiği oluşturacağınızı öğrenmek önemlidir. Bu yazıda, Python kullanarak SVM ile verilerinizi nasıl sınıflandırabileceğinizi ve bu sınıflandırma sonuçlarını nasıl görselleştireceğinizi adım adım keşfedeceğiz.

SVM Nedir ve Neden Kullanmalıyız?

SVM, verileri belirli bir sınıf altında kategorize etmek için kullanılan bir makine öğrenimi algoritmasıdır. Özellikle, iki veya daha fazla grubun sınıflandırıldığı durumlarda etkili olmaktadır. Temel amacı, verilerin arasında en geniş marjı sağlayarak sınıflandırma yapmaktır. Marj, sınırlayıcı vektörler (destek vektörleri) arasındaki mesafeyle ölçülür. Bu özellik, SVM’i aşırı öğrenme (overfitting) problemini minimize etme konusunda etkili hale getirir. Özellikle karmaşık ve çok boyutlu veri setlerinde mükemmel performans gösterir.

SVM’nin popülaritesi, özellikle yüksek boyutlu verilerde etkili sonuçlar elde etme yeteneğinden kaynaklanmaktadır. Veri kümenizde birçok özellik (özellik) varsa, SVM bu özellikleri kullanarak doğru sınıflandırmayı gerçekleştirebilir. Ayrıca, SVM esnek bir algoritmadır; farklı çekirdek fonksiyonları (kernel functions) kullanılarak hem doğrusal hem de doğrusal olmayan veriler üzerinde işlem yapabilir.

Python, SVM algoritmalarını uygulamak için bir dizi kütüphane sunar. Özellikle scikit-learn, bu sistemi kurmak ve çalıştırmak için yaygın olarak kullanılan bir kütüphanedir. SVM ile sınıflandırma yapmanın yanı sıra, modelin performansını değerlendirmek ve sonuçların görselleştirilmesi konusunda kolaylık sağlar.

Pandas ve Scikit-learn ile Veri Yükleme ve Ön İşleme

Öncelikle, verilerimizi SVM modeline dahil etmek için bir veri kümesine ihtiyacımız var. Pandas kütüphanesini kullanarak bu verileri yükleyebiliriz. Örneğin, basit bir veri kümesi oluşturabilir veya mevcut bir veri kümesine yükleme yapabiliriz. Aşağıda, scikit-learn kütüphanesinin sunduğu veri kümesi örneklerinden birini kullanarak SVM grafiği oluşturmaya hazırlık olarak verimizin nasıl yükleneceği ve gözlemleneceği gösterilmiştir.

“`python
import pandas as pd
from sklearn import datasets

# Iris veri setini yükle
iris = datasets.load_iris()
X = iris.data[:, :2] # sadece ilk iki özellik (sepal_length ve sepal_width)
y = iris.target
“`
Bu kod parçası, iris veri setini yükler ve sadece sepal_length ve sepal_width özelliklerini almakta olup, bu özellikler üzerinden sınıflandırma yapacağız.

Verimizi öğrendikten sonra, veri ön işleme yapmamız gerekebilir. Veri ön işleme, verideki hataları düzeltmek, eksik değerleri doldurmak ya da veriyi normalize etmek gibi adımları içerir. Örnek olarak, aşağıdaki kod ile verimizin durumunu inceleyebiliriz:

“`python
import numpy as np
import matplotlib.pyplot as plt

# Verinin durumunu kontrol et
print(pd.DataFrame(X, columns=[‘Sepal Length’, ‘Sepal Width’]).head())
“`

SVM Modeli Oluşturma

Verilerimizi hazırladıktan sonra, SVM modelimizi oluşturabiliriz. scikit-learn kütüphanesi, SVM’yi kolaylıkla uygulamanıza yardımcı olacaktır. Aşağıdaki kodda SVM modelini kurup verilerimize uygulayacağız. İlk önce gerekli kütüphaneleri içe aktaralım:

“`python
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split

# Verimizi eğitim ve test olarak ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# SVM modelini oluştur ve eğit
model = SVC(kernel=’linear’) # doğrusal çekirdek kullanarak
model.fit(X_train, y_train)
“`

Bu noktada, SVM modelimizi eğitim verisi ile eğitmiş olduk. Modelin doğruluğunu test etmek için test setimizi kullanabiliriz. Bu aşamada, modelimizin başarı oranını kontrol etmek önemlidir. Aşağıdaki kod parçacığında bu doğruluk oranını görebilirsiniz:

“`python
from sklearn.metrics import accuracy_score

# Test veri setini kullanarak tahmin yap
y_pred = model.predict(X_test)

# Doğruluk oranını kontrol et
print(f’Doğruluk Oranı: {accuracy_score(y_test, y_pred)}’)
“`

SVM Grafiği Oluşturma

Sınıflandırma modelimizi oluşturdum ve başarı oranını test ettik. Şimdi, modelimizi görselleştirmek için, destek vektörlerini ve karar sınırlarını grafikte göstermemiz faydalı olacaktır. Bunun için matplotlib kütüphanesinden yararlanacağız. Aşağıdaki kodda, verilerin ve karar sınırlarının çizimi yer alacaktır:

“`python
# Grafiği oluştur
plt.figure(figsize=(10, 6))

# Verileri çiz
y_unique = np.unique(y)
colors = [‘red’, ‘blue’, ‘green’]

for i, label in enumerate(y_unique):
plt.scatter(X[y == label, 0], X[y == label, 1], color=colors[i], label=iris.target_names[label])

# Karar sınırını çiz
ax = plt.gca()

xlim = ax.get_xlim()
ylim = ax.get_ylim()
XX, YY = np.meshgrid(np.linspace(xlim[0], xlim[1], 100), np.linspace(ylim[0], ylim[1], 100))
Z = model.decision_function(np.c_[XX.ravel(), YY.ravel()])
Z = Z.reshape(XX.shape)

# Karar limitlerini gölgelendir
plt.contourf(XX, YY, Z, levels=0, alpha=0.5, cmap=’coolwarm’)

# Destek vektörlerini çiz
plt.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1], s=100, facecolors=’none’, edgecolors=’black’, label=’Destek Vektörleri’)

plt.title(‘SVM Karar Sınırları ve Destek Vektörleri’)
plt.xlabel(‘Sepal Length’)
plt.ylabel(‘Sepal Width’)
plt.legend()
plt.show()
“`

Yukarıdaki kod parçacığı, veri noktalarımızı, SVM’nin karar sınırlarını ve destek vektörlerini görselleştirecektir. Bu görselleştirme, modelin verilerinizi ne şekilde sınıflandırdığını anlamanıza yardımcı olacaktır.

Sonuç ve Birkaç Ek İpucu

Bu yazıda, Python ile destek vektör makinelerini nasıl kullanacağınızı ve sınıflandırma sonuçlarınızı nasıl görselleştireceğinizi öğrendiniz. SVM’nin güçlü bir makine öğrenim algoritması olduğunu ve verileri çok boyutlu bir şekilde sınıflandırabilme yeteneğine sahip olduğunu unutmamanız önemlidir. Ayrıca, görselleştirmeler yaparak modelinizin ne kadar etkili çalıştığını gözlemlemek, geliştirme süreçlerinizde önemli bir rol oynar.

Ek olarak, SVM’yi optimize etmek için hyperparameter tuning yapmayı düşünebilirsiniz. Kernel tipini değiştirmek, C ve gamma gibi hyperparametreleri ayarlamak, modelinizin performansını artırmak için etkili yöntemlerdir. Bu tür ayarlamalar, modelinizin başarısını büyük ölçüde etkileyebilir.

Son olarak, bu bilgileri kendi projelerinizde deneyerek uygulamanız faydalı olacaktır. SVM ile farklı veri setleri üzerinde çalışarak daha fazla deneyim kazanabilir ve makine öğrenimi yolculuğunuzda ileri adımlar atabilirsiniz.

Scroll to Top