Conceitos de IA em Python

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

Executar código →
main.py
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.

  1. Mude as entradas ou os pesos e preveja a saída antes de executar.
  2. Imprima os valores intermediários para acompanhar cada passo do cálculo.
  3. Resolva os desafios indicados abaixo para implementar a ideia você mesmo.
Executar no IDE Python →

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.

Todos os desafios