0Pricing
Learn AI with Python · Lekcja

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:

  • kernel typ granicy (linear, rbf, poly)
  • C kara za błędy / regularyzacja
  • gamma szerokość 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 5x

Oszacowania 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

  1. Teoria SVM: marginesy i wektory nośne
  2. Trik jądrowy: RBF, wielomianowe i sigmoidalne
  3. SVM do klasyfikacji ze sklearn
  4. SVM do regresji (SVR)
← Powrót do Learn AI with Python