SVMs para classificação com sklearn
SVC, LinearSVC, seleção de kernel, class_weight='balanced' e probability=True.
SVMs para classificação com sklearn é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
SVMs no scikit-learn
O scikit-learn oferece vários classificadores SVM. O principal é o SVC, que oferece suporte a fronteiras lineares e baseadas em núcleos por meio do parâmetro kernel.
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))Os principais parâmetros do SVC
Três parâmetros determinam o comportamento do SVC:
kernelo tipo de fronteira (linear, rbf, poly)Ca penalidade por erro/a regularizaçãogammaa largura do núcleo para rbf/poly
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=10, gamma=0.1)Sempre padronize primeiro
Os SVMs são sensíveis à escala. Envolva o escalonador e o SVC em um fluxo de processamento para que o escalonamento seja ajustado apenas com os dados de treinamento, inclusive durante a validação cruzada.
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 para grandes conjuntos de dados
SVC(kernel="linear") não escala bem para muitas amostras. O LinearSVC usa um solucionador mais rápido, otimizado para problemas lineares, e lida muito melhor com dados grandes e de alta dimensão.
from sklearn.svm import LinearSVC
model = LinearSVC(C=1.0, max_iter=5000)
model.fit(Xtr, ytr)SVC versus LinearSVC
Use LinearSVC para dados grandes ou esparsos, como texto. Use SVC quando precisar de núcleos para fronteiras não lineares. Observe que o LinearSVC usa uma função de perda um pouco diferente e não oferece predict_proba.
Desequilíbrio entre classes
Quando uma classe é rara, o SVM tende a favorecer a classe majoritária. Definir class_weight="balanced" atribui automaticamente pesos às classes de forma inversamente proporcional à sua frequência.
from sklearn.svm import SVC
model = SVC(kernel="rbf", class_weight="balanced")
model.fit(Xtr, ytr)Pesos personalizados das classes
Você também pode passar um dicionário explícito para class_weight a fim de dar mais peso a uma classe específica do que ao balanceamento automático.
from sklearn.svm import SVC
model = SVC(class_weight={0: 1, 1: 5}) # class 1 errors cost 5xEstimativas de probabilidade
Por padrão, SVC retorna rótulos definitivos. Defina probability=True para habilitar predict_proba (por meio de calibração interna), necessário para ROC AUC e ajuste de limiares. Isso torna o treinamento mais lento.
from sklearn.svm import SVC
model = SVC(probability=True)
model.fit(Xtr, ytr)
proba = model.predict_proba(Xte)[:, 1]SVMs multiclasses
SVC lida automaticamente com mais de duas classes usando um esquema um contra um. Você não precisa alterar o código; basta fazer fit com rótulos multiclasses para que tudo funcione.
from sklearn.svm import SVC
model = SVC(decision_function_shape="ovr")
model.fit(X_multiclass, y_multiclass)Ajuste de C e gama com GridSearchCV
A receita padrão é fazer uma busca em grade sobre C e gamma em escala logarítmica, tudo dentro de um fluxo de processamento com escalonamento.
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_)Dicas práticas
SVMs apresentam ótimo desempenho em conjuntos de dados pequenos ou médios, com margens bem definidas. Elas têm dificuldade com dados muito grandes (use LinearSVC ou mude para métodos de reforço). Sempre escale os dados, ajuste C e gama e use class_weight para lidar com o desbalanceamento.
Verificação rápida
Teste os seus conhecimentos sobre SVM do sklearn.
Recapitulação
Recapitulação: use SVC com kernel, C e gamma para classificação não linear, sempre dentro de um fluxo de processamento com escalonamento. Mude para LinearSVC em dados grandes ou de texto. Lide com o desbalanceamento usando class_weight="balanced" e ajuste C e gamma em conjunto com GridSearchCV.
Perguntas Frequentes
A aula “SVMs para classificação com sklearn” é grátis?
Sim — o texto completo de “SVMs para classificação com sklearn” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “SVMs para classificação com sklearn”?
SVC, LinearSVC, seleção de kernel, class_weight='balanced' e probability=True. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “SVMs para classificação com sklearn”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Teoria de SVM: margens e vetores de suporte
- Truque do kernel: RBF, polinomial e sigmoide
- SVMs para classificação com sklearn
- SVMs para regressão (SVR)