Regressão linear e logística em Python
A regressão é o tipo mais simples de aprendizado de máquina. A regressão linear prevê um número com uma reta; a regressão logística passa essa reta por uma sigmoid para prever a probabilidade de uma resposta sim/não.
O conceito em palavras simples
A regressão é o tipo mais simples de aprendizado de máquina. A regressão linear prevê um número com uma reta; a regressão logística passa essa reta por uma sigmoid para prever a probabilidade de uma resposta sim/não.
Ajuste uma reta por mínimos quadrados e depois transforme uma pontuação em probabilidade com regressão logística.
Ideias principais
- A regressão linear prevê valores contínuos, como preços ou temperaturas.
- A regressão logística prevê uma probabilidade para duas classes.
- Ambas podem ser treinadas com gradiente descendente em vez de uma fórmula fechada.
- O perceptron é um classificador parecido que só atualiza os pesos quando erra.
Quando usar?
- Entender o que acontece dentro das redes neurais e das bibliotecas de IA.
- Aprender a ideia antes de implementá-la nos desafios correspondentes.
- Se preparar para cursos de aprendizado de máquina, entrevistas e projetos.
Veja na prática
Clique no gráfico da esquerda para adicionar pontos e ver a melhor reta se atualizar. À direita, mude w e b para mover a fronteira de decisão.
Código de exemplo
import math
# Linear regression: find the line that best fits the points (least squares).
xs = [1, 2, 3, 4, 5]
ys = [2.1, 3.9, 6.2, 8.1, 9.8]
mean_x, mean_y = sum(xs) / len(xs), sum(ys) / len(ys)
slope = sum((x - mean_x) * (y - mean_y) for x, y in zip(xs, ys)) / sum((x - mean_x) ** 2 for x in xs)
intercept = mean_y - slope * mean_x
print(f"line: y = {slope:.2f}x + {intercept:.2f}")
print("predict x=6:", round(slope * 6 + intercept, 2))
# Logistic regression turns a score into a probability with the sigmoid.
def predict_pass(hours_studied, weight=1.5, bias=-4.0):
return 1 / (1 + math.exp(-(weight * hours_studied + bias)))
for hours in (1, 3, 5):
p = predict_pass(hours)
print(f"{hours} hours -> pass probability {p:.2f} -> {'pass' if p >= 0.5 else 'fail'}")
Saída esperada
line: y = 1.96x + 0.14
predict x=6: 11.9
1 hours -> pass probability 0.08 -> fail
3 hours -> pass probability 0.62 -> pass
5 hours -> pass probability 0.97 -> pass
Como funciona
A fórmula de mínimos quadrados encontra a inclinação e o intercepto que tornam mínima a distância ao quadrado até os pontos, resultando em y = 1.96x + 0.14. predict_pass() calcula uma pontuação a partir das horas de estudo e a sigmoid a transforma em probabilidade; 0.5 é o limite entre reprovar e aprovar.
Altere os valores e execute o programa no compilador Python online CodeUtility sem instalar Python.
Exercícios práticos
Altere as entradas e teste casos de borda antes de usar conjuntos de dados maiores.
- Mude as entradas ou os pesos e preveja a saída antes de executar.
- Imprima os valores intermediários para acompanhar cada passo do cálculo.
- Resolva os desafios indicados abaixo para implementar a ideia você mesmo.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
- Regressão linear simples (mínimos quadrados) Encontre a reta que melhor se ajusta aos pontos com as fórmulas de mínimos quadrados. Médio
- Regressão linear com descida do gradiente Aprenda a inclinação e o intercepto de uma reta descendo aos poucos pelo erro quadrático médio. Médio
- Previsão com regressão logística Classifique exemplos como 0 ou 1 passando uma soma ponderada pela sigmoide e comparando com um limiar. Fácil
- Algoritmo de aprendizado do perceptron Treine o perceptron original, que só atualiza os pesos quando erra. Médio