Menu
CoddyTech

Fazendo previsões com uma linha

Parte da seção Estatística para ML do Journey de Machine Learning da Coddy. Lição 38 de 64.

Uma reta ajustada é uma pequena máquina de previsão: insira um novo x e obtenha um y. Um filhote de cachorro foi pesado da semana 8 à semana 20:

weeks = np.array([8, 10, 12, 14, 16, 18, 20])
kg = np.array([3.1, 4.0, 5.2, 6.1, 7.0, 8.2, 9.1])
slope, intercept = np.polyfit(weeks, kg, 1)
new_weeks = np.array([15, 52])
print(np.round(slope * new_weeks + intercept, 1))

Isso imprime [ 6.6 25.2]. A semana 15 está dentro dos dados. A semana 52 não está, e a linha continua subindo muito depois que o cachorro para de crescer:

Sete pesagens da semana 8 à 20 em uma linha ajustada. A linha continua tracejada até uma zona sombreada marcada como fora dos dados, chegando a 25.2 kg na semana 52, enquanto a curva pontilhada de um cachorro real se estabiliza perto de 13 kg

Prever fora do intervalo dos dados é extrapolação e é arriscado: um modelo é confiável apenas para entradas semelhantes às que usou para aprender. Confira primeiro:

week = 52
print(week >= weeks.min() and week <= weeks.max())

Isso imprime False.

challenge icon

Desafio

Médio

Uma vela foi medida a cada hora enquanto queimava, da hora 0 à hora 6: hours e height em cm. O programa lê new_hours.

  1. Ajuste a reta que prevê height a partir de hours.
  2. Imprima a previsão para new_hours, arredondada para 2 casas decimais.
  3. Imprima se new_hours está dentro do intervalo de horas dos dados, incluindo as duas extremidades.

Para a entrada 4.5:

Predicted height: 13.07 cm
Inside the data: yes

Experimente você mesmo

import numpy as np

hours = np.array([0, 1, 2, 3, 4, 5, 6])
height = np.array([20.0, 18.4, 17.1, 15.3, 13.9, 12.2, 10.8])
new_hours = float(input())

# 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 Estatística para ML

Pratique por conta própria: Compilador de Python online