Gegevenswetenschap - lineaire regressie


We missen een belangrijke variabele die Calorie_Burnage beïnvloedt, namelijk de Duur van de trainingssessie.

Duur in combinatie met Average_Pulse zal samen Calorie_Burnage preciezer verklaren.


Lineaire regressie

De term regressie wordt gebruikt wanneer u de relatie tussen variabelen probeert te vinden.

In Machine Learning en in statistische modellering wordt die relatie gebruikt om de uitkomst van gebeurtenissen te voorspellen.

In deze module behandelen we de volgende vragen:

  • Kunnen we concluderen dat Average_Pulse en Duration gerelateerd zijn aan Calorie_Burnage?
  • Kunnen we Average_Pulse en Duration gebruiken om Calorie_Burnage te voorspellen?

Kleinste vierkante methode

Lineaire regressie gebruikt de kleinste-kwadratenmethode.

Het concept is om een ​​lijn te trekken door alle geplotte datapunten. De lijn is zo gepositioneerd dat de afstand tot alle gegevenspunten wordt geminimaliseerd.

De afstand wordt "restanten" of "fouten" genoemd.

De rode stippellijnen vertegenwoordigen de afstand van de gegevenspunten tot de getekende wiskundige functie.

Lineaire regressie - Kleinste kwadraat

Lineaire regressie met één verklarende variabele

In dit voorbeeld zullen we proberen Calorie_Burnage te voorspellen met Average_Pulse met behulp van lineaire regressie:

Voorbeeld

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()

Voorbeeld uitgelegd:

  • Importeer de modules die je nodig hebt: Panda's, matplotlib en Scipy
  • Isoleer gemiddelde_puls als x. Isoleer Calorie_burnage als y
  • Krijg belangrijke sleutelwaarden met: slope, intercept, r, p, std_err = stats.linregress(x, y)
  • Maak een functie die de hellings- en onderscheppingswaarden gebruikt om een ​​nieuwe waarde te retourneren. Deze nieuwe waarde geeft aan waar op de y-as de corresponderende x-waarde zal worden geplaatst
  • Voer elke waarde van de x-array door de functie. Dit resulteert in een nieuwe array met nieuwe waarden voor de y-as: mymodel = list(map(myfunc, x))
  • Teken de originele spreidingsplot: plt.scatter(x, y)
  • Teken de lijn van lineaire regressie: plt.plot(x, mijnmodel)
  • Definieer maximale en minimale waarden van de as
  • Label de as: "Average_Pulse" en "Calorie_Burnage"

Uitgang:

Lineaire regressie - één variabele - kleinste kwadraat

Denk je dat de lijn Calorie_Burnage precies kan voorspellen?

We zullen laten zien dat de variabele Average_Pulse alleen niet voldoende is om een ​​nauwkeurige voorspelling van Calorie_Burnage te maken.