Trending Technology Machine Learning, Artificial Intelligent, Block Chain, IoT, DevOps, Data Science

Recent Post

Search

Tuesday, 19 February 2019

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