The Science of today is the technology of tomorrow ML/AI/Block Chain/IoT/DevOps/Data Science

Latest Post

Search This Blog

SVM

In this blog we are creating our own dataset.

Import required libraries


# For mathematical calculation
import numpy as np

# For plotting graphs
import matplotlib.pyplot as plt

# Import the sklearn for SVM
from sklearn import svm

# For creating datasets
from sklearn.datasets import make_circles

Create dataset


df, value = make_circles(n_samples=500,
            noise=.05,factor=.5)

Plot dataset


# Plot the dataset
plt.scatter(df[:,0],df[:,1],c=value)
plt.show()
 

Train and test the model.


# Calculate the higher dimension value
x = df[:,0]
y = df[:,1]
z = x**2 + y**2

kernals = ['linear','poly','rbf']
training_set = np.c_[x,y]
 
# Train and predict for each kernal
for kernal in kernals:   
    clf=svm.SVC(kernel=kernal,gamma=2)
        
    # Train the model 
    clf.fit(training_set,value)

    # Test the model
    prediction = clf.predict([[-0.4,-0.4]])
    
    print prediction
    '''    
    Output:
    [0] - linear kernal
    [1] - polynomial kernal
    [1] - rbf kernal
    
    '''

    .
    .
    .

Plot various kernals


    
    .
    .


    .

    # plot the line, the points, 
    # and the nearest vectors to the plane
    X = training_set
    y = value
    X0 = X[np.where(y == 0)]
    X1 = X[np.where(y == 1)]
    plt.figure()    
    
    x_min = X[:, 0].min()
    x_max = X[:, 0].max()
    y_min = X[:, 1].min()
    y_max = X[:, 1].max()
    
    XX, YY = np.mgrid[x_min:x_max:200j
              , y_min:y_max:200j]

    Z = clf.decision_function(np.c_[XX.ravel()
                      , YY.ravel()])
    
    # Put the result into a color plot
    Z = Z.reshape(XX.shape)
    
    plt.pcolormesh(XX, YY, Z > 0
              , cmap=plt.cm.Paired)
    
    plt.contour(XX, YY, Z, colors=['k', 'k', 'k'],
            linestyles=['--', '-', '--'],
            levels=[-.5, 0, .5])
           
    
    plt.scatter(X0[:, 0], X0[:, 1], c='r',s=50)
    plt.scatter(X1[:, 0], X1[:, 1], c='b',s=50)  
    
    title = ('SVC with {} kernal').format(kernal)
    plt.title(title)    
    plt.show()







(See how rbf kernal clearly classifies the dataset)

No comments:

Post a Comment

Popular Posts