Aprendizado Supervisionado
O aprendizado supervisionado mapeia recursos de entrada para rótulos conhecidos. Regressão prevê valores contínuos; classificação atribui categorias discretas. O sklearn fornece uma API consistente entre os algoritmos.
Busque em todas as páginas da documentação
O aprendizado supervisionado mapeia recursos de entrada para rótulos conhecidos. Regressão prevê valores contínuos; classificação atribui categorias discretas. O sklearn fornece uma API consistente entre os algoritmos.
Cartão de referência rápida - pronto para copiar e colar.
from sklearn.linear_model import Ridge, LogisticRegression
from sklearn.ensemble import RandomForestClassifier, GradientBoostingRegressor
# Classificação
clf = LogisticRegression(max_iter=1000)
clf.fit(X_train, y_train)
# Regressão
reg = Ridge(alpha=1.0)
reg.fit(X_train, y_train)Quando usar isso:
"""supervised_learning.py - regressão e classificação com sklearn."""
from __future__ import annotations
import pandas as pd
from sklearn.datasets import fetch_california_housing, load_breast_cancer
from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor
from sklearn.linear_model import LogisticRegression, Ridge
from sklearn.metrics import mean_absolute_error, roc_auc_score
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
# --- Classificação ---
cancer = load_breast_cancer(as_frame=True)
Xc, yc = cancer.data, cancer.target
Xc_train, Xc_test, yc_train, yc_test = train_test_split(Xc, yc, test_size=0.2, random_state=42)
clf_pipe = Pipeline([
("scale", StandardScaler()),
("clf", LogisticRegression(max_iter=1000, random_state=42)),
])
clf_pipe.fit(Xc_train, yc_train)
proba = clf_pipe.predict_proba(Xc_test)[:, 1]
print("classificação AUC:", roc_auc_score(yc_test, proba))
# --- Regressão ---
housing = fetch_california_housing(as_frame=True)
Xr, yr = housing.data, housing.target
Xr_train, Xr_test, yr_train, yr_test = train_test_split(Xr, yr, test_size=0.2, random_state=42)
reg = RandomForestRegressor(n_estimators=200, random_state=42, n_jobs=-1)
reg.fit(Xr_train, yr_train)
print("regressão MAE:", mean_absolute_error(yr_test, reg.predict(Xr_test)))O que isso demonstra:
fit/predict para regressão e classificação.| Problema | Comece Com | Atualize Para |
|---|---|---|
| Classificação binária | LogisticRegression | RandomForest, XGBoost |
| Multiclasse | LogisticRegression (multinomial) | RandomForestClassifier |
| Regressão (linear-ish) | Ridge | GradientBoostingRegressor |
| Regressão (não linear) | RandomForestRegressor | LightGBM |
| Poucos dados, interpretabilidade | Modelos lineares | - |
| Grande volume tabular, precisão | Gradient boosting | - |
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
# SVM: forte com recursos escalonados, mais lento em grandes volumes de dados
svm = Pipeline([("scale", StandardScaler()), ("clf", SVC(probability=True))])
# k-NN: aprendiz preguiçoso, sensível à escala e dimensionalidade
knn = Pipeline([("scale", StandardScaler()), ("clf", KNeighborsClassifier(n_neighbors=5))])StandardScaler em um pipeline.max_depth=None memoriza ruído em poucos dados. Correção: limite a profundidade, aumente min_samples_leaf, use CV.predict_proba - alguns modelos precisam de probability=True (SVC) para saídas de probabilidade. Correção: verifique o suporte do estimador antes de usar proba.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Modelos lineares | Interpretabilidade, linha de base rápida | Interações não lineares complexas dominam |
| Random Forest | Padrão robusto, pouco ajuste | Necessita de precisão máxima em dados tabulares grandes |
| Gradient boosting | Melhor precisão tabular | Necessita de iteração de treinamento rápida ou interpretabilidade |
| Deep learning | Imagens, texto, sequências | Dados tabulares pequenos com <10k linhas |
alpha maior encolhe os coeficientes em direção a zero, reduzindo o overfitting.alpha=0 é mínimos quadrados ordinários.RidgeCV).RandomForest do sklearn não lida nativamente com NaN - impute primeiro.joblib.dump o pipeline ajustado.pipe.predict(new_row) com os mesmos nomes de coluna.LogisticRegression(multi_class="multinomial", max_iter=1000)
# ou
RandomForestClassifier() # lida com multiclasse nativamenteaverage="macro" quando as classes estiverem desequilibradas.for name, imp in zip(feature_names, reg.feature_importances_):
print(f"{name}: {imp:.3f}")feature_importances_.Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026