Ciência de Dados - Regressão Linear


Falta uma variável importante que afeta Calorie_Burnage, que é a duração da sessão de treinamento.

Duração em combinação com Average_Pulse irá explicar Calorie_Burnage mais precisamente.


Regressão linear

O termo regressão é usado quando você tenta encontrar a relação entre variáveis.

Em Machine Learning e em modelagem estatística, essa relação é usada para prever o resultado dos eventos.

Neste módulo, abordaremos as seguintes questões:

  • Podemos concluir que Average_Pulse e Duration estão relacionados a Calorie_Burnage?
  • Podemos usar Average_Pulse e Duration para prever Calorie_Burnage?

Método dos mínimos quadrados

A regressão linear usa o método dos mínimos quadrados.

O conceito é desenhar uma linha através de todos os pontos de dados plotados. A linha é posicionada de forma a minimizar a distância de todos os pontos de dados.

A distância é chamada de "resíduos" ou "erros".

As linhas tracejadas vermelhas representam a distância dos pontos de dados até a função matemática desenhada.

Regressão Linear - Mínimo Quadrado

Regressão linear usando uma variável explicativa

Neste exemplo, tentaremos prever Calorie_Burnage com Average_Pulse usando Regressão Linear:

Exemplo

import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats

full_health_data = pd.read_csv("data.csv", header=0, sep=",")

x = full_health_data["Average_Pulse"]
y = full_health_data ["Calorie_Burnage"]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
 return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, slope * x + intercept)
plt.ylim(ymin=0, ymax=2000)
plt.xlim(xmin=0, xmax=200)
plt.xlabel("Average_Pulse")
plt.ylabel ("Calorie_Burnage")
plt.show()

Exemplo explicado:

  • Importe os módulos que você precisa: Pandas, matplotlib e Scipy
  • Isole Average_Pulse como x. Isolar Calorie_burnage como y
  • Obtenha valores de chave importantes com: slope, intercept, r, p, std_err = stats.linregress(x, y)
  • Crie uma função que use os valores de inclinação e interceptação para retornar um novo valor. Este novo valor representa onde no eixo y o valor x correspondente será colocado
  • Execute cada valor da matriz x por meio da função. Isso resultará em um novo array com novos valores para o eixo y: mymodel = list(map(myfunc, x))
  • Desenhe o gráfico de dispersão original: plt.scatter(x, y)
  • Desenhe a linha de regressão linear: plt.plot(x, mymodel)
  • Definir valores máximos e mínimos do eixo
  • Rotule o eixo: "Average_Pulse" e "Calorie_Burnage"

Saída:

Regressão Linear - Uma variável - Mínimo Quadrado

Você acha que a linha é capaz de prever Calorie_Burnage com precisão?

Mostraremos que a variável Average_Pulse sozinha não é suficiente para fazer uma previsão precisa de Calorie_Burnage.