Spec-Zone.ru › scikit-learn

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 classifier with a custom kernel. It will plot the decision surface and highlight the support vectors.

3-Class classification using Support Vector Machine with custom kernel
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

import matplotlib.pyplot as plt
import numpy as np

from sklearn import datasets, svm
from sklearn.inspection import 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


def my_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)


# We create an instance of SVC with that kernel and fit it on the data.
clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)

ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    multiclass_colors="Paired",
    ax=ax,
    response_method="predict",
    plot_method="pcolormesh",
    shading="auto",
    alpha=0.5,
)

# Plot the training points
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)
# Highlight the support vectors
plt.scatter(
    X[clf.support_, 0],
    X[clf.support_, 1],
    facecolor="none",
    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.103 seconds)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_custom_kernel.ipynb

Download Python source code: plot_custom_kernel.py

Download zipped: plot_custom_kernel.zip

Related examples

Plot different SVM classifiers in the iris dataset

SVM: Maximum margin separating hyperplane

Plot the support vectors in LinearSVC

Nearest Centroid Classification

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/svm/plot_custom_kernel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API