.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "packages/scikit-learn/auto_examples/plot_svm_non_linear.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end <sphx_glr_download_packages_scikit-learn_auto_examples_plot_svm_non_linear.py>` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_packages_scikit-learn_auto_examples_plot_svm_non_linear.py: Example of linear and non-linear models ======================================== This is an example plot from the tutorial which accompanies an explanation of the support vector machine GUI. .. GENERATED FROM PYTHON SOURCE LINES 8-17 .. code-block:: Python import numpy as np import matplotlib.pyplot as plt from sklearn import svm rng = np.random.default_rng(27446968) .. GENERATED FROM PYTHON SOURCE LINES 18-19 data that is linearly separable .. GENERATED FROM PYTHON SOURCE LINES 19-65 .. code-block:: Python def linear_model(rseed=42, n_samples=30): "Generate data according to a linear model" np.random.seed(rseed) data = np.random.normal(0, 10, (n_samples, 2)) data[: n_samples // 2] -= 15 data[n_samples // 2 :] += 15 labels = np.ones(n_samples) labels[: n_samples // 2] = -1 return data, labels X, y = linear_model() clf = svm.SVC(kernel="linear") clf.fit(X, y) plt.figure(figsize=(6, 4)) ax = plt.subplot(111, xticks=[], yticks=[]) ax.scatter(X[:, 0], X[:, 1], c=y, cmap="bone") ax.scatter( clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80, edgecolors="k", facecolors="none", ) delta = 1 y_min, y_max = -50, 50 x_min, x_max = -50, 50 x = np.arange(x_min, x_max + delta, delta) y = np.arange(y_min, y_max + delta, delta) X1, X2 = np.meshgrid(x, y) Z = clf.decision_function(np.c_[X1.ravel(), X2.ravel()]) Z = Z.reshape(X1.shape) ax.contour( X1, X2, Z, [-1.0, 0.0, 1.0], colors="k", linestyles=["dashed", "solid", "dashed"] ) .. image-sg:: /packages/scikit-learn/auto_examples/images/sphx_glr_plot_svm_non_linear_001.png :alt: plot svm non linear :srcset: /packages/scikit-learn/auto_examples/images/sphx_glr_plot_svm_non_linear_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none <matplotlib.contour.QuadContourSet object at 0x7f2468789c70> .. GENERATED FROM PYTHON SOURCE LINES 66-67 data with a non-linear separation .. GENERATED FROM PYTHON SOURCE LINES 67-125 .. code-block:: Python def nonlinear_model(rseed=27446968, n_samples=30): rng = np.random.default_rng(rseed) radius = 40 * rng.random(n_samples) far_pts = radius > 20 radius[far_pts] *= 1.2 radius[~far_pts] *= 1.1 theta = rng.random(n_samples) * np.pi * 2 data = np.empty((n_samples, 2)) data[:, 0] = radius * np.cos(theta) data[:, 1] = radius * np.sin(theta) labels = np.ones(n_samples) labels[far_pts] = -1 return data, labels X, y = nonlinear_model() clf = svm.SVC(kernel="rbf", gamma=0.001, coef0=0, degree=3) clf.fit(X, y) plt.figure(figsize=(6, 4)) ax = plt.subplot(1, 1, 1, xticks=[], yticks=[]) ax.scatter(X[:, 0], X[:, 1], c=y, cmap="bone", zorder=2) ax.scatter( clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80, edgecolors="k", facecolors="none", ) delta = 1 y_min, y_max = -50, 50 x_min, x_max = -50, 50 x = np.arange(x_min, x_max + delta, delta) y = np.arange(y_min, y_max + delta, delta) X1, X2 = np.meshgrid(x, y) Z = clf.decision_function(np.c_[X1.ravel(), X2.ravel()]) Z = Z.reshape(X1.shape) ax.contour( X1, X2, Z, [-1.0, 0.0, 1.0], colors="k", linestyles=["dashed", "solid", "dashed"], zorder=1, ) plt.show() .. image-sg:: /packages/scikit-learn/auto_examples/images/sphx_glr_plot_svm_non_linear_002.png :alt: plot svm non linear :srcset: /packages/scikit-learn/auto_examples/images/sphx_glr_plot_svm_non_linear_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.069 seconds) .. _sphx_glr_download_packages_scikit-learn_auto_examples_plot_svm_non_linear.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_svm_non_linear.ipynb <plot_svm_non_linear.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_svm_non_linear.py <plot_svm_non_linear.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_svm_non_linear.zip <plot_svm_non_linear.zip>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_