Machine Learning: Support Vector Machines

Machine Learning: Support Vector Machines

Bahasa Python (Kernel = Gaussian)

# Mengimpor library
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Mengimpor dataset
dataset = pd.read_csv('Iklan_sosmed.csv')
X = dataset.iloc[:, [2, 3]].values
y = dataset.iloc[:, 4].values

# Menjadi dataset ke dalam Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

# Membuat model SVM terhadap Training set
from sklearn.svm import SVC
classifier = SVC(kernel = 'rbf', random_state = 0)
classifier.fit(X_train, y_train)

# Memprediksi hasil test set
y_pred = classifier.predict(X_test)

# Membuat confusion matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

# Visualisasi hasil model SVM dari Training set
from matplotlib.colors import ListedColormap
X_set, y_set = X_train, y_train
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),
                     np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('SVM (Training set)')
plt.xlabel('Usia')
plt.ylabel('Estimasi Gaji')
plt.legend()
plt.show()

# Visualisasi model SVM terhadap Test set
from matplotlib.colors import ListedColormap
X_set, y_set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),
                     np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('SVM (Test set)')
plt.xlabel('Usia')
plt.ylabel('Estimasi Gaji')
plt.legend()
plt.show()

Penjelasan:

  • Semua perintah sama dengan pembahasan pada bahasa Python sebelumnya, yang berbeda hanya pada line 23, di mana kita pilih kernelnya ‘rbf’, yang merupakan kernel gaussian.

Sekarang kita lihat confusion matriks terhadap test setnya:

Confusion matriks test set dengan menggunakan kernel gaussian.

Ternyata akurasinya sangat tinggi, sebesar 93% dan lebih tinggi dibanding sebelumnya tanpa kernel yaitu 90%!

Sekarang kita lihat visualisasi model untuk training set:


Model SVM (kernel=gaussian) terhadap Training set.

Sekarang kita lihat untuk test set nya:


Model SVM (kernel=gaussian) terhadap Test set.

Terlihat hanya ada 7 yang salah deteksi. Selain itu, jika dibandingkan dengan algoritma yang lain, penggunaan SVM dengan kernel gaussian memberikan zona hijau yang jauh lebih besar.

Dengan demikian kita rekomendasikan agar pemilik showroom mobil mengiklankan mobil SUV nya di zona hijau ini agar efektif.

Untuk membaca halaman selanjutnya, silakan klik tombol di bawah ini:

Pages: 1 2 3 4 5 6 7

Subscribe
Notify of
guest

14 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Bobby
Bobby
5 years ago

Bisa dikasih contoh perhitungan manualnya sampai titi temu bahwa kelas tersebut masuk ke kelas -1 atau +1
terimakasih

agi
agi
5 years ago

permisi pak, apakah boleh minta data setnya sebagai bahan latihan agar lebih mudah dipahami pak

Hera Masri'an
Hera Masri'an
5 years ago

Permisi, Pak.
Saya mau bertanya.
Apakah Support Vector Machine bisa digunakan untuk clustering?

aninda
aninda
5 years ago

kak untuk mendowload data latih terdapat bagian mana ya?

adhy
adhy
5 years ago

Permisi pak mau tanya,,,
apa metode SVM bisa mengklasifikasi objek yg bergerak atau objek dalam video??

Amel
Amel
4 years ago

Kenapa binary class nya digunakan bilangan +1 dan -1? Tidak menggunakan 0 dan 1 saja. Terima kasih?

MaruIchi
MaruIchi
10 months ago

misalnya di library sklearn, svm bisa menambahkan parameter C, dan juga parameter C ini (yang adalah selain kernel) jika digunakan dapat digunakan untuk mencari metode terbaik dengan grid search sebagai caranya yaitu kombinasi antara C dan juga kernel., di pembahasan ini, kenapa seperti tidak menambahkan pembahasan tentang parameter C maupun perhitungan manual seperti SVM dengan tulis tangan?