0Pricing
Learn AI with Python · Lezione

SVM per la classificazione con sklearn

SVC, LinearSVC, scelta del kernel, class_weight='balanced', probability=True

SVM per la classificazione con sklearn è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Gli SVM in scikit-learn

scikit-learn offre diversi classificatori SVM. Il principale è SVC, che supporta confini lineari e basati su kernel tramite il suo parametro kernel.

from sklearn.svm import SVC

model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))

I parametri principali di SVC

Tre parametri determinano il comportamento di SVC:

  • kernel: il tipo di confine (linear, rbf, poly)
  • C: la penalità per gli errori e la regolarizzazione
  • gamma: l'ampiezza del kernel per rbf/poly
from sklearn.svm import SVC

model = SVC(kernel="rbf", C=10, gamma=0.1)

Ridimensionare sempre prima

Gli SVM sono sensibili alla scala. Inserisca lo scaler e SVC in una pipeline, così il ridimensionamento viene adattato solo sui dati di addestramento, anche durante la convalida incrociata.

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
pipe.fit(Xtr, ytr)

LinearSVC per dataset di grandi dimensioni

SVC(kernel="linear") non si adatta bene a un numero elevato di campioni. LinearSVC utilizza un solver più veloce, ottimizzato per i problemi lineari, e gestisce molto meglio dati di grandi dimensioni e ad alta dimensionalità.

from sklearn.svm import LinearSVC

model = LinearSVC(C=1.0, max_iter=5000)
model.fit(Xtr, ytr)

SVC e LinearSVC a confronto

Utilizzi LinearSVC per dati di grandi dimensioni o sparsi, come i testi. Utilizzi SVC quando servono kernel per ottenere confini non lineari. Tenga presente che LinearSVC utilizza una funzione di perdita leggermente diversa e non dispone di predict_proba.

Squilibrio tra le classi

Quando una classe è rara, l'SVM tende a favorire la classe maggioritaria. Impostando class_weight="balanced", le classi vengono pesate automaticamente in modo inversamente proporzionale alla loro frequenza.

from sklearn.svm import SVC

model = SVC(kernel="rbf", class_weight="balanced")
model.fit(Xtr, ytr)

Pesi personalizzati delle classi

Può anche passare un dizionario esplicito a class_weight per dare maggiore rilievo a una classe specifica rispetto al bilanciamento automatico.

from sklearn.svm import SVC

model = SVC(class_weight={0: 1, 1: 5})  # class 1 errors cost 5x

Stime di probabilità

Per impostazione predefinita, SVC restituisce etichette discrete. Imposti probability=True per abilitare predict_proba (tramite calibrazione interna), necessario per ROC AUC e per la regolazione della soglia. Questo rallenta l'addestramento.

from sklearn.svm import SVC

model = SVC(probability=True)
model.fit(Xtr, ytr)
proba = model.predict_proba(Xte)[:, 1]

SVM multiclass

SVC gestisce automaticamente più di due classi utilizzando uno schema uno-contro-uno. Non deve modificare il codice: è sufficiente eseguire il fit con etichette multiclass e tutto funzionerà.

from sklearn.svm import SVC

model = SVC(decision_function_shape="ovr")
model.fit(X_multiclass, y_multiclass)

Ottimizzazione di C e gamma con GridSearchCV

La procedura standard consiste nell'eseguire una ricerca su griglia di C e gamma su una scala logaritmica, il tutto all'interno di una pipeline di scalatura.

from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
param = {
    "svc__C": [0.1, 1, 10, 100],
    "svc__gamma": [0.001, 0.01, 0.1, 1],
}
gs = GridSearchCV(pipe, param, cv=5, scoring="f1")
gs.fit(Xtr, ytr)
print(gs.best_params_)

Consigli pratici

Le SVM danno il meglio su dataset di dimensioni piccole o medie con margini ben definiti. Incontrano difficoltà con dati molto numerosi (utilizzi LinearSVC o passi al boosting). Ridimensioni sempre le feature, ottimizzi C e gamma e utilizzi class_weight in caso di classi sbilanciate.

Verifica rapida

Verifichi le Sue conoscenze sulle SVM di sklearn.

Riepilogo

Riepilogo: Utilizzi SVC con kernel, C e gamma per la classificazione non lineare, sempre all'interno di una pipeline di scalatura. Passi a LinearSVC per dataset di grandi dimensioni o dati testuali. Gestisca lo sbilanciamento con class_weight="balanced" e ottimizzi congiuntamente C e gamma tramite GridSearchCV.

Domande Frequenti

La lezione «SVM per la classificazione con sklearn» è gratuita?

Sì — il testo completo di «SVM per la classificazione con sklearn» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «SVM per la classificazione con sklearn»?

SVC, LinearSVC, scelta del kernel, class_weight='balanced', probability=True Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «SVM per la classificazione con sklearn»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Teoria delle SVM: margini e vettori di supporto
  2. Kernel trick: RBF, polinomiale e sigmoide
  3. SVM per la classificazione con sklearn
  4. SVM per la regressione (SVR)
← Torna a Learn AI with Python