SVM do klasyfikacji ze sklearn
SVC, LinearSVC, wybór jądra, class_weight='balanced', probability=True.
SVM do klasyfikacji ze sklearn to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
SVM w scikit-learn
scikit-learn oferuje kilka klasyfikatorów SVM. Głównym z nich jest SVC, który obsługuje granice liniowe i oparte na jądrach za pomocą parametru kernel.
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))Podstawowe parametry SVC
Na działanie SVC wpływają trzy parametry:
kerneltyp granicy (linear, rbf, poly)Ckara za błędy / regularyzacjagammaszerokość jądra dla rbf/poly
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=10, gamma=0.1)Zawsze najpierw należy skalować
SVM-y są wrażliwe na skalę. Należy umieścić skaler i SVC w potoku, aby skalowanie było dopasowywane wyłącznie do danych treningowych, również wewnątrz walidacji krzyżowej.
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 w przypadku dużych zbiorów danych
SVC(kernel="linear") słabo skaluje się do dużej liczby próbek. LinearSVC korzysta z szybszego solvera zoptymalizowanego pod kątem problemów liniowych i znacznie lepiej radzi sobie z dużymi danymi o wielu wymiarach.
from sklearn.svm import LinearSVC
model = LinearSVC(C=1.0, max_iter=5000)
model.fit(Xtr, ytr)SVC a LinearSVC
LinearSVC należy używać w przypadku dużych lub rzadkich danych (np. tekstu). SVC należy wybrać, gdy potrzebne są jądra do wyznaczania nieliniowych granic. Należy pamiętać, że LinearSVC używa nieco innej funkcji straty i nie udostępnia predict_proba.
Niezrównoważenie klas
Gdy jedna klasa występuje rzadko, SVM ma tendencję do faworyzowania klasy większościowej. Ustawienie class_weight="balanced" automatycznie waży klasy odwrotnie proporcjonalnie do ich częstości.
from sklearn.svm import SVC
model = SVC(kernel="rbf", class_weight="balanced")
model.fit(Xtr, ytr)Niestandardowe wagi klas
Można również przekazać jawny słownik do class_weight, aby silniej uwzględnić konkretną klasę niż przy automatycznym równoważeniu.
from sklearn.svm import SVC
model = SVC(class_weight={0: 1, 1: 5}) # class 1 errors cost 5xOszacowania prawdopodobieństwa
Domyślnie SVC zwraca twarde etykiety. Należy ustawić probability=True, aby włączyć predict_proba (za pomocą wewnętrznej kalibracji), potrzebne do obliczania ROC AUC i dostrajania progów. Spowalnia to trenowanie.
from sklearn.svm import SVC
model = SVC(probability=True)
model.fit(Xtr, ytr)
proba = model.predict_proba(Xte)[:, 1]Wieloklasowe modele SVM
SVC automatycznie obsługuje więcej niż dwie klasy, korzystając ze schematu one-vs-one. Nie trzeba zmieniać kodu — wystarczy przeprowadzić dopasowanie z etykietami wieloklasowymi.
from sklearn.svm import SVC
model = SVC(decision_function_shape="ovr")
model.fit(X_multiclass, y_multiclass)Dostrajanie C i gamma za pomocą GridSearchCV
Typowe podejście polega na wyszukiwaniu siatkowym wartości C i gamma w skali logarytmicznej, a wszystko odbywa się wewnątrz potoku skalowania.
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_)Praktyczne wskazówki
Modele SVM świetnie sprawdzają się w przypadku małych i średnich zbiorów danych z wyraźnymi marginesami. Mają trudności z bardzo dużymi zbiorami danych (należy użyć LinearSVC lub przejść na boosting). Zawsze należy skalować dane, dostrajać C i gamma oraz używać class_weight w przypadku niezrównoważonych klas.
Szybkie sprawdzenie
Sprawdź swoją wiedzę o SVM w sklearn.
Podsumowanie
Podsumowanie: Należy używać SVC z parametrami kernel, C i gamma do klasyfikacji nieliniowej, zawsze wewnątrz potoku skalowania. W przypadku dużych zbiorów danych lub tekstu należy przejść na LinearSVC. Niezrównoważone klasy należy obsługiwać za pomocą class_weight="balanced", a parametry C i gamma dostrajać wspólnie przy użyciu GridSearchCV.
Często zadawane pytania
Czy lekcja „SVM do klasyfikacji ze sklearn” jest bezpłatna?
Tak — pełny tekst „SVM do klasyfikacji ze sklearn” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „SVM do klasyfikacji ze sklearn”?
SVC, LinearSVC, wybór jądra, class_weight='balanced', probability=True. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „SVM do klasyfikacji ze sklearn”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Teoria SVM: marginesy i wektory nośne
- Trik jądrowy: RBF, wielomianowe i sigmoidalne
- SVM do klasyfikacji ze sklearn
- SVM do regresji (SVR)