Menu
CoddyTech

Gráficos de resíduos

Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 14 de 58.

Uma boa pontuação pode esconder uma forma inadequada. Esta linha obtém R quadrado de 0.82 para uma massa que cresce, mas seus erros formam um arco:

À esquerda: altura da massa em relação às horas, crescendo rapidamente e depois desacelerando, com uma linha ajustada reta, R quadrado 0.82. À direita: os resíduos em relação às previsões sobem de -1.3 a +0.7 e voltam a cair para -0.7, formando um arco ao redor da linha zero tracejada

Aquele gráfico à direita é um gráfico de resíduos: cada resíduo, valor real menos previsto, em relação à sua previsão, com uma linha em 0:

residuals = y_test - pred
fig, ax = plt.subplots()
ax.scatter(pred, residuals)
ax.axhline(0, color="gray", linestyle="--")
plt.show()

Resíduos saudáveis se espalham como ruído em torno de 0. Um padrão significa que o modelo não captou algo: neste caso, que a subida desacelera.

Com vários recursos, plote os resíduos em relação a cada recurso também: aquele que forma um arco esconde a curva.

challenge icon

Desafio

Médio

Uma autoescola ajustou uma reta a 80 testes de frenagem: speed_kmh e braking_m. O código inicial mantém as previsões dos testes em pred e rotula o gráfico.

  1. Calcule os resíduos.
  2. Faça um gráfico de dispersão dos resíduos em relação às previsões sobre uma linha cinza tracejada em 0 e, em seguida, exiba-o.

A reta não consegue acompanhar uma curva? À esquerda, ela até prevê uma distância de frenagem negativa.

O gráfico de uma reta adequada, com outros dados, se parece com isto:

Um gráfico de resíduos intitulado Uma reta adequada: vinte pontos espalhados sem nenhum padrão acima e abaixo de uma linha tracejada em 0

Coddy descreve seu gráfico.

Experimente você mesmo

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

brakes = pd.read_csv("braking.csv")
X_train, X_test, y_train, y_test = train_test_split(brakes[["speed_kmh"]], brakes["braking_m"], test_size=0.25, random_state=0)
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)

fig, ax = plt.subplots()
ax.set_title("Braking Line Check")
ax.set_xlabel("Predicted braking distance (m)")
ax.set_ylabel("Residual (m)")

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado supervisionado

Pratique por conta própria: Compilador de Python online