In [1]:
from sklearn.svm import SVC
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
In [2]:
def draw_contour(clf, X):
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

    plot_step = 1000
    
    xx, yy = np.meshgrid(np.linspace(x_min, x_max, plot_step),
    np.linspace(y_min, y_max, plot_step))
    
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    
#     print(Z)
    Z = Z.reshape(xx.shape)
    cs = plt.contourf(xx, yy, Z, cmap=plt.cm.RdYlBu, alpha=0.3)
In [3]:
data = pd.read_csv('banknotes.csv')
In [4]:
data
Out[4]:
conterfeit Length Left Right Bottom Top Diagonal
0 0 214.8 131.0 131.1 9.0 9.7 141.0
1 0 214.6 129.7 129.7 8.1 9.5 141.7
2 0 214.8 129.7 129.7 8.7 9.6 142.2
3 0 214.8 129.7 129.6 7.5 10.4 142.0
4 0 215.0 129.6 129.7 10.4 7.7 141.8
... ... ... ... ... ... ... ...
195 1 215.0 130.4 130.3 9.9 12.1 139.6
196 1 215.1 130.3 129.9 10.3 11.5 139.7
197 1 214.8 130.3 130.4 10.6 11.1 140.0
198 1 214.7 130.7 130.8 11.2 11.2 139.4
199 1 214.3 129.9 129.9 10.2 11.5 139.6

200 rows × 7 columns

In [5]:
X = data.loc[:, ['Right', 'Left']]
y = data.iloc[:,0]
plt.scatter(data.loc[:,['Right']], data.loc[:,['Left']], c = y)
Out[5]:
<matplotlib.collections.PathCollection at 0x12102c940>
In [20]:
svm = SVC(kernel='linear', C=0.0001)
svm.fit(X, y)
Out[20]:
SVC(C=0.0001, kernel='linear')
In [21]:
svm.score(X, y)
Out[21]:
0.755
In [22]:
draw_contour(svm, X.values)
plt.scatter(data.loc[:,['Right']], data.loc[:,['Left']], c = y)
Out[22]:
<matplotlib.collections.PathCollection at 0x123657580>
In [23]:
svm = SVC(kernel='rbf', C=100)
svm.fit(X, y)

print(svm.score(X, y))

draw_contour(svm, X.values)
plt.scatter(data.loc[:,['Right']], data.loc[:,['Left']], c = y)
0.815
Out[23]:
<matplotlib.collections.PathCollection at 0x1236cc220>
In [ ]: