
import matplotlib.pyplot as plt
from sklearn import datasets, svm
from sklearn.inspection import DecisionBoundaryDisplay
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

X, y = make_blobs(n_samples=3000, centers=3, cluster_std=2, random_state=42)

plt.scatter(X[:,0], X[:,1], c=y, cmap="viridis", s=20, edgecolors="k")
plt.title("Blobs (3 classes)")
plt.show()

# Train a linear SVM
C = 1.0
clf = svm.SVC(kernel="linear", C=C)   
clf.fit(X, y)

title = "SVC with linear kernel"      


fig, ax = plt.subplots(1, 1, figsize=(6, 5))

# Plot decision regions
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    response_method="predict",
    cmap=plt.cm.coolwarm,
    alpha=0.8,
    ax=ax,
)

# Plot the training points
ax.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
ax.set_title(title)
plt.show()
