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 regolarizzazionegamma: 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 5xStime 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
- Teoria delle SVM: margini e vettori di supporto
- Kernel trick: RBF, polinomiale e sigmoide
- SVM per la classificazione con sklearn
- SVM per la regressione (SVR)