SVM för klassificering med sklearn
SVC, LinearSVC, kernelval, class_weight='balanced', probability=True.
SVM för klassificering med sklearn är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
SVM:er i scikit-learn
scikit-learn erbjuder flera SVM-klassificerare. Den viktigaste är SVC, som stöder linjära och kernelbaserade gränser via parametern kernel.
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))De viktigaste SVC-parametrarna
Tre parametrar styr hur SVC fungerar:
kerneltypen av gräns (linear, rbf, poly)Cfelstraffet och regulariseringengammakernelbredden för rbf/poly
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=10, gamma=0.1)Skala alltid först
SVM:er är känsliga för skalan. Lägg skalaren och SVC i en pipeline, så att skalningen endast anpassas på träningsdata, även inuti korsvalidering.
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 för stora dataset
SVC(kernel="linear") skalar dåligt när antalet observationer är stort. LinearSVC använder en snabbare lösare som är optimerad för linjära problem och hanterar stora, högdimensionella data mycket bättre.
from sklearn.svm import LinearSVC
model = LinearSVC(C=1.0, max_iter=5000)
model.fit(Xtr, ytr)SVC jämfört med LinearSVC
Använd LinearSVC för stora eller glesa data, till exempel text. Använd SVC när ni behöver kernels för icke-linjära gränser. Observera att LinearSVC använder en något annorlunda förlustfunktion och saknar predict_proba.
Klassobalans
När en klass är sällsynt tenderar SVM att gynna majoritetsklassen. Om ni anger class_weight="balanced" viktas klasserna automatiskt omvänt mot deras frekvens.
from sklearn.svm import SVC
model = SVC(kernel="rbf", class_weight="balanced")
model.fit(Xtr, ytr)Anpassade klassvikter
Ni kan också skicka in en explicit dictionary till class_weight för att ge en viss klass större vikt än vid den automatiska balanseringen.
from sklearn.svm import SVC
model = SVC(class_weight={0: 1, 1: 5}) # class 1 errors cost 5xSannolikhetsuppskattningar
Som standard returnerar SVC hårda klassetiketter. Ange probability=True för att aktivera predict_proba (via intern kalibrering), vilket behövs för ROC AUC och justering av tröskelvärden. Det gör träningen långsammare.
from sklearn.svm import SVC
model = SVC(probability=True)
model.fit(Xtr, ytr)
proba = model.predict_proba(Xte)[:, 1]SVM för flera klasser
SVC hanterar automatiskt fler än två klasser med ett one-vs-one-schema. Ni behöver inte ändra koden; träna bara med etiketter för flera klasser så fungerar det.
from sklearn.svm import SVC
model = SVC(decision_function_shape="ovr")
model.fit(X_multiclass, y_multiclass)Finjustering av C och gamma med GridSearchCV
Standardmetoden är en grid search över C och gamma på en logaritmisk skala, allt inuti en pipeline för skalning.
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_)Praktiska tips
SVM-modeller fungerar bäst på små till medelstora datamängder med tydliga marginaler. De har svårt för mycket stora datamängder (använd LinearSVC eller byt till boosting). Skala alltid features, finjustera C och gamma och använd class_weight vid obalanserade klasser.
Snabbtest
Testa era kunskaper om SVM i sklearn.
Sammanfattning
Sammanfattning: Använd SVC med kernel, C och gamma för icke-linjär klassificering, alltid i en pipeline för skalning. Byt till LinearSVC för stora datamängder eller textdata. Hantera obalanserade klasser med class_weight="balanced" och finjustera C och gamma tillsammans med GridSearchCV.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 53
- Lektioner
- 225
Vanliga frågor
Är lektionen ”SVM för klassificering med sklearn” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”SVM för klassificering med sklearn”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
Vad lär jag mig i ”SVM för klassificering med sklearn”?
SVC, LinearSVC, kernelval, class_weight='balanced', probability=True. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?
Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”SVM för klassificering med sklearn”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?
Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- SVM-teori: marginaler och stödvektorer
- Kerneltricket: RBF, polynom och sigmoid
- SVM för klassificering med sklearn
- SVM för regression (SVR)