ini rangkuman yang saya buat karena sedang penasaran dengan SVM dalam perumusan konsepnya di phyton.
JADI di bawah ini saya mencoba menggunakan kernel linear untuk klasifikasi,
setiap "#ln[x]" saya running untuk melihat hasilnya dan apakah error atau tidak
# coding: utf-8
# In[3]:
#PRELIMINARIES(PERSIAPAN)
#import package to visualize the classifer
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
import warnings
# In[2]:
#import package to do the classifying
import numpy as np
from sklearn.svm import SVC
# In[4]:
#CREATE FUNCTION TO VISUALIZE CLASSIFICATION REGIONS
def versiontuple(v):
return tuple(map(int, (v.split("."))))
# In[6]:
def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):
#setup marker generator and color map
markers = ('s', 'x', 'o', '^')
colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')
cmap = ListedColormap(colors[:len(np.unique(y))])
#plot the decision surface
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() +1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() +1
xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),
np.arrange(x2_min, x2_max, resolution))
Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)
Z = Z.reshape(xx1.shape)
plt.contourf(xxx1, xx2, Z, alpha=0.4, cmap=cmap)
plt.xlim(xx1.min(), xx1.max())
plt.ylim(xx2.min(), xx2.max())
for idx, cl in enumerate(np.unique(y)):
plt.scatter(x=X[y == c1, 0], y=X[y == c1, 1],
alpha=0.8, c=cmap(idx),
marker=markers[idx], label=c1)
#highlight test samples
if test_idx:
#plot all samples
if not versiontuple(np.__version__) >= versiontuple('1.9.0'):
X_test, y_test = X[list(test_idx), :], y[list(test_idx)]
warnings.warn('Please update to Numpy 1.9.0 or newer')
else:
X_test, y_test = X[test_idx, :], y[test_idx]
plt.scatter(X_test[:, 0],
X_test[:, 1],
c='',
alpha=1.0,
linewidths=1,
marker='o',
s=55, label='test set')
# In[9]:
#GENERATE DATA
np.random.seed(0)
X_xor = np.random.randn(200, 2)
y_xor = np.logical_xor(X_xor[:, 0] > 0,
X_xor[:, 1] > 0)
y_xor = np.where(y_xor, 1, -1)
plt.scatter(X_xor[y_xor == 1, 0],
X_xor[y_xor == 1, 0],
c='b', marker='x',
label='1')
plt.scatter(X_xor[y_xor == -1, 0],
X_xor[y_xor == -1, 1],
c='r',
marker='s',
label='-1')
plt.xlim([-3, 3])
plt.ylim([-3, 3])
plt.legend(loc='best')
plt.tight_layout()
#indentation error = itu artinya minta di tab atau kalimat tersebut harus agak menjorok dari atasnya
#Kalau unvalid syntaxm bisa jadi kamu salah ketik atau ada perintah yang belum ditulis. plt.show()
# In[27]:
#CLASSIFY USING A LINEAR KERNEL
#Create a SVC classifier using a linear kernel
#kata "rbf" di bawah ini bisa diganti dengan macam-macam kernel SVM
svm = SVC(kernel='linear', C=1, random_state=0)
#Train the classifier
svm.fit(X_xor, y_xor)
#Visualize the decision boundaries
plot_decision_regions(X_xor, y_xor, classifier=svm)
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()
ref: Chrisalbon.com
Continue reading Perintah kernel SVM menggunakan phyton
JADI di bawah ini saya mencoba menggunakan kernel linear untuk klasifikasi,
setiap "#ln[x]" saya running untuk melihat hasilnya dan apakah error atau tidak
# coding: utf-8
# In[3]:
#PRELIMINARIES(PERSIAPAN)
#import package to visualize the classifer
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
import warnings
# In[2]:
#import package to do the classifying
import numpy as np
from sklearn.svm import SVC
# In[4]:
#CREATE FUNCTION TO VISUALIZE CLASSIFICATION REGIONS
def versiontuple(v):
return tuple(map(int, (v.split("."))))
# In[6]:
def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):
#setup marker generator and color map
markers = ('s', 'x', 'o', '^')
colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')
cmap = ListedColormap(colors[:len(np.unique(y))])
#plot the decision surface
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() +1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() +1
xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),
np.arrange(x2_min, x2_max, resolution))
Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)
Z = Z.reshape(xx1.shape)
plt.contourf(xxx1, xx2, Z, alpha=0.4, cmap=cmap)
plt.xlim(xx1.min(), xx1.max())
plt.ylim(xx2.min(), xx2.max())
for idx, cl in enumerate(np.unique(y)):
plt.scatter(x=X[y == c1, 0], y=X[y == c1, 1],
alpha=0.8, c=cmap(idx),
marker=markers[idx], label=c1)
#highlight test samples
if test_idx:
#plot all samples
if not versiontuple(np.__version__) >= versiontuple('1.9.0'):
X_test, y_test = X[list(test_idx), :], y[list(test_idx)]
warnings.warn('Please update to Numpy 1.9.0 or newer')
else:
X_test, y_test = X[test_idx, :], y[test_idx]
plt.scatter(X_test[:, 0],
X_test[:, 1],
c='',
alpha=1.0,
linewidths=1,
marker='o',
s=55, label='test set')
# In[9]:
#GENERATE DATA
np.random.seed(0)
X_xor = np.random.randn(200, 2)
y_xor = np.logical_xor(X_xor[:, 0] > 0,
X_xor[:, 1] > 0)
y_xor = np.where(y_xor, 1, -1)
plt.scatter(X_xor[y_xor == 1, 0],
X_xor[y_xor == 1, 0],
c='b', marker='x',
label='1')
plt.scatter(X_xor[y_xor == -1, 0],
X_xor[y_xor == -1, 1],
c='r',
marker='s',
label='-1')
plt.xlim([-3, 3])
plt.ylim([-3, 3])
plt.legend(loc='best')
plt.tight_layout()
#indentation error = itu artinya minta di tab atau kalimat tersebut harus agak menjorok dari atasnya
#Kalau unvalid syntaxm bisa jadi kamu salah ketik atau ada perintah yang belum ditulis. plt.show()
# In[27]:
#CLASSIFY USING A LINEAR KERNEL
#Create a SVC classifier using a linear kernel
#kata "rbf" di bawah ini bisa diganti dengan macam-macam kernel SVM
svm = SVC(kernel='linear', C=1, random_state=0)
#Train the classifier
svm.fit(X_xor, y_xor)
#Visualize the decision boundaries
plot_decision_regions(X_xor, y_xor, classifier=svm)
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()
ref: Chrisalbon.com