Loading W Code...
6
Topics
sklearn
Implementation
Indian Context
Mango Classification, Handwritten Devanagari Recognition, Vehicle Number Plate OCR
Concept Level: Beginner
# UNDERSTANDING SVM BASICS
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.datasets import make_blobs
# Create a simple 2D classification dataset
# Like sorting Alphonso vs Badami mangoes by size and sweetness
np.random.seed(42)
X, y = make_blobs(n_samples=100, centers=2, cluster_std=1.2, random_state=42)
# Train SVM with linear kernel
svm_model = SVC(kernel='linear', C=1.0)
svm_model.fit(X, y)
# Get the support vectors
support_vectors = svm_model.support_vectors_
print(f"Number of Support Vectors: {len(support_vectors)}")
print(f"Support Vectors per class: {svm_model.n_support_}")
# Plot the data and decision boundary
plt.figure(figsize=(10, 8))
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='RdYlBu', edgecolor='black', s=50)
# Highlight support vectors
plt.scatter(support_vectors[:, 0], support_vectors[:, 1],
s=200, facecolors='none', edgecolors='green', linewidth=2,
label='Support Vectors')
# Plot decision boundary and margins
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
# Create grid for decision boundary
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50),
np.linspace(ylim[0], ylim[1], 50))
Z = svm_model.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# Plot decision boundary and margins
plt.contour(xx, yy, Z, colors='k', levels=[-1, 0, 1],
linestyles=['--', '-', '--'], linewidths=[1, 2, 1])
plt.xlabel('Feature 1 (Size)')
plt.ylabel('Feature 2 (Sweetness)')
plt.title('SVM: Maximum Margin Classifier')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()