Klasifikasi Bunga Iris(Irises) Menggunakan Metode Linear SVM(Support Vector Machine)

adi_sptro
4 min readNov 13, 2023

--

python Scikit-learn

Halo😁👆. Siapa yang gatau SVM adik-adik? maka bacaan ini cocok untuk kamu😎👌

Sebenarnya sih alasan mengambil ini `karena sudah dipilihin` 🫱🏿‍🫲🏿

Mengambil studi kasus tersebut karena dataset iris termasuk dataset simpel dan banyak contohnya, karena gweh juga mau memahami jadi gweh memutuskan untuk mengambil studikasus yang sederhana ini😎👍

SVM(Support Vector Machine)

Menurut wikipedia, SVM termasuk supervised learning yang biasanya digunakan untuk klasifikasi ataupun regresi. Dalam pemodelan klasifikasi, support vector machine memiliki konsep yang lebih matang serta jelas secara matematis dibandingkan dengan teknik klasifikasi lainnya. Support vector machine juga dapat mengatasi masalah klasifikasi dan regresi dengan metode linear maupun non linear.
Algoritma Support Vector Machine (SVM) ini digunakan untuk mencari hyperplane terbaik dalam ruang N-dimensi yang secara jelas mengklasifikasikan titik data. Hyperplane adalah sebuah fungsi yang digunakan sebagai pemisah antar kelas yang satu dengan yang lain. Fungsi ini digunakan untuk mengklasifikasikan di dalam ruang kelas dimensi yang lebih tinggi.

Linear SVM(Support Vector Machine)

Linear SVM merupakan salah satu prinsip kerja SVM linear digunakan untuk data yang dapat dipisahkan secara linear, yang berarti jika sebuah dataset dapat diklasifikasi menjadi dua kelas dengan menggunakan sebuah garis lurus tunggal, maka data tersebut disebut sebagai data yang dapat dipisahkan secara linear, dan classifier yang digunakan disebut sebagai Linear SVM classifier.

Linear SVM

Visualisasi Linier SVM
Data yang tersedia pada SVM disimbolkan dengan notasi (xi) ∈ R^d dan label masing-masing kelas yaitu kelas +1 dan kelas -1 yang diasumsikan terpisah sempurna oleh hyperplane berdimensi d diberi notasi yi ∈ {-1, + 1} , dimana i = 1,2,…, l ; dimana l adalah banyak data.

Sehingga diperoleh definisi persamaan hyperplane sebagai berikut:

Sehingga menurut persamaan hyperplane diperoleh SVM linier untuk kelas positif:

Sedangkan untuk persamaan hyperplane kelas negatif pada SVM linier adalah:

dengan keterangan

w = bobot (vektor bobot)
x = nilai masukan matriks (fitur)
b = bias

Untuk menghitung nilai margin terbesar dilakukan dengan melakukan optimasi nilai jarak antara hyperplane dengan titik terdekat pada setiap kelas. Quadratic Programming (QP) digunakan sebagai rumus untuk mencari titik minimal suatu persamaan dengan batasan persamaan:

Permasalahan di atas dapat diselesaikan dengan berbagai teknik komputasi, salah satunya adalah dengan menggunakan persamaan Langrange Multiplier sebagai berikut:

Sebagian besar perhitungan di atas memperoleh αi positif, dimana data yang berkorelasi dengan αi positif disebut vektor pendukung. Sehingga digunakan persamaan berikut untuk menentukan hasil klasifikasi data baru:
class = f(x)

dengan f(x) sebagai sign atau label

Scikit-Learn(sklearn)

Scikit-learn adalah library python yang digunakan untuk bidang machine learning. Fitur yang disediakan cukup lengkap, seperti klasifikasi, regresi, klustering dan termasuk SVM, Random Forest, Gradient Boosting, K-Means dan DBSCAN. Library ini di desain untuk kompatible dengan library NumPy dan SciPy

Tidak perlu lama-lama lagi, let’s get started💀

  1. Import Library dulu masbro
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 accuracy_score

2. Load data Iris

iris = datasets.load_iris()
X = iris.data
y = iris.target

3. Pisahkan dataset

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

4. Pre-processing data

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

5. Train Model SVM

svm = SVC(kernel='linear', C=1.0)
svm.fit(X_train, y_train)

6. Evaluasi Model

y_pred = svm.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Akurasi model SVM: {accuracy:.2f}")

7. Visualisasi Hasil

# Modifikasi Visualisasi dengan Warna yang Berbeda
plt.figure(figsize=(8, 6))

# Warna untuk setiap kelas
colors = ['red', 'green']

# Label untuk setiap kelas
labels = ['Iris setosa', 'Iris versicolor']

# Memisahkan hasil prediksi ke dalam dua kelas
for i in range(2):
plt.scatter(X_test[y_pred == i, 0], X_test[y_pred == i, 1], c=colors[i], label=labels[i])

plt.xlabel("Atribut 1")
plt.ylabel("Atribut 2")
plt.title("Hasil Prediksi dengan SVM")
plt.legend()
plt.show()
Terlihat berdasarkan gambar, Tipe bunga sudah dikelompokkan sesuai tipe bunga (merah = Iris setosa, dan hijau = Iris versicolor)

Referensi:

https://codingstudio.id/blog/support-vector-machine

https://en.wikipedia.org/wiki/Support_vector_machine

Tutorial on Support Vector Machine (SVM)
Vikramaditya Jakkula,

Thanks to for helping me:

NabilaZhafarina

Akbar R. F

Dewiika

--

--