Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 17 / Pratique

Atelier : linéaire contre RBF

Comparer proprement avec échelle et CV.

◷ 25 minutesTravail sur votre machine

Énoncé

Sur binaire non linéaire (deux cercles générés en numpy ci-dessous, pas de sklearn.datasets : la génération reste explicite) : SVC(linear) vs SVC(rbf) (leçon mia-noyaux) en pipelines avec échelle, balayage manuel de C/gamma avec cross_validate (Ch14, pas de GridSearchCV : la boucle montre ce que l'automatique cachera), verdict test avec accuracy + matrice. Concluez sur le coût.

Contraintes

Échelle dans le pipeline, graines notées, temps mesurés.

Indices

Cercles générés à la main (angles uniformes + bruit gaussien, graine fixée), StandardScaler obligatoire, boucle manuelle sur C in [0.1, 1, 10] et gamma in ["scale", 0.1] avec cross_validate.

Correction disponibleCherchez d’abord par vous-même.Voir la correction

Correction

import numpy as np
from sklearn.svm import SVC
rng = np.random.default_rng(0)
ang = rng.uniform(0, 2 * np.pi, 200)
X = np.vstack([np.column_stack([np.cos(ang[:100]), np.sin(ang[:100])]),
               np.column_stack([3 * np.cos(ang[100:]), 3 * np.sin(ang[100:])])])
y = np.array([0] * 100 + [1] * 100)
lin = make_pipeline(StandardScaler(), SVC(kernel="linear"))
rbf = make_pipeline(StandardScaler(), SVC(kernel="rbf"))

Attendu : linéaire ≈ 50 %, RBF > 90 %, temps RBF supérieur. Moralité : puissance locale contre coût global — d'où les forêts comme alternative tabulée.