Note

Go to the end to download the full example code. or to run this example in your browser via JupyterLite or Binder

SVM with custom kernel#

Simple usage of Support Vector Machines to classify a sample. It will plot the decision surface and the support vectors.

3-Class classification using Support Vector Machine with custom kernel
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause
importmatplotlib.pyplotasplt
importnumpyasnp
fromsklearnimport datasets, svm
fromsklearn.inspectionimport DecisionBoundaryDisplay
# import some data to play with
iris = datasets.load_iris ()
X = iris.data[:, :2] # we only take the first two features. We could
# avoid this ugly slicing by using a two-dim dataset
Y = iris.target
defmy_kernel(X, Y):
"""
 We create a custom kernel:
 (2 0)
 k(X, Y) = X ( ) Y.T
 (0 1)
 """
 M = np.array ([[2, 0], [0, 1.0]])
 return np.dot (np.dot (X, M), Y.T)
h = 0.02 # step size in the mesh
# we create an instance of SVM and fit out data.
clf = svm.SVC (kernel=my_kernel)
clf.fit(X, Y)
ax = plt.gca ()
DecisionBoundaryDisplay.from_estimator (
 clf,
 X,
 cmap=plt.cm.Paired,
 ax=ax,
 response_method="predict",
 plot_method="pcolormesh",
 shading="auto",
)
# Plot also the training points
plt.scatter (X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.title ("3-Class classification using Support Vector Machine with custom kernel")
plt.axis ("tight")
plt.show ()

Total running time of the script: (0 minutes 0.094 seconds)

Related examples

Plot different SVM classifiers in the iris dataset

Plot different SVM classifiers in the iris dataset

SVM: Maximum margin separating hyperplane

SVM: Maximum margin separating hyperplane

Decision boundary of semi-supervised classifiers versus SVM on the Iris dataset

Decision boundary of semi-supervised classifiers versus SVM on the Iris dataset

Plot the support vectors in LinearSVC

Plot the support vectors in LinearSVC

Gallery generated by Sphinx-Gallery