Gegevenswetenschap - Case lineaire regressie


Case: gebruik Duur + Gemiddelde_Pulse om Calorie_Burnage te voorspellen

Maak een lineaire regressietabel met Average_Pulse en Duration als verklarende variabelen:

Voorbeeld

import pandas as pd
import statsmodels.formula.api as smf

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

model = smf.ols('Calorie_Burnage ~ Average_Pulse + Duration', data = full_health_data)
results = model.fit()
print(results.summary())

Voorbeeld uitgelegd:

  • Importeer de bibliotheek statsmodels.formula.api als smf. Statsmodels is een statistische bibliotheek in Python.
  • Gebruik de set full_health_data.
  • Maak een model op basis van gewone kleinste kwadraten met smf.ols(). Merk op dat de verklarende variabele als eerste tussen haakjes moet worden geschreven. Gebruik de dataset full_health_data.
  • Door .fit() aan te roepen, verkrijgt u de variabele resultaten. Dit bevat veel informatie over het regressiemodel.
  • Roep samenvatting() aan om de tabel met de resultaten van lineaire regressie te krijgen.

Uitgang:

Lineaire regressietabel geval

De lineaire regressiefunctie kan wiskundig worden herschreven als:

Calorie_Burnage = Average_Pulse * 3.1695 + Duration * 5.8424 - 334.5194

Afgerond op twee decimalen:

Calorie_Burnage = Average_Pulse * 3.17 + Duration * 5.84 - 334.52


Definieer de lineaire regressiefunctie in Python

Definieer de lineaire regressiefunctie in Python om voorspellingen uit te voeren.

Wat is Calorie_Burnage als:

  • Gemiddelde pols is 110 en de duur van de trainingssessie is 60 minuten?
  • Gemiddelde pols is 140 en de duur van de trainingssessie is 45 minuten?
  • De gemiddelde hartslag is 175 en de duur van de trainingssessie is 20 minuten?

Voorbeeld

def Predict_Calorie_Burnage(Average_Pulse, Duration):
 return(3.1695*Average_Pulse + 5.8434 * Duration - 334.5194)

print(Predict_Calorie_Burnage(110,60))
print(Predict_Calorie_Burnage(140,45))
print(Predict_Calorie_Burnage(175,20))

De antwoorden:

  • De gemiddelde hartslag is 110 en de duur van de trainingssessie is 60 minuten = 365 calorieën
  • De gemiddelde hartslag is 140 en de duur van de trainingssessie is 45 minuten = 372 calorieën
  • De gemiddelde hartslag is 175 en de duur van de trainingssessie is 20 minuten = 337 calorieën

Toegang tot de coëfficiënten

Kijk naar de coëfficiënten:

  • Calorie_Burnage neemt toe met 3,17 als Average_Pulse met één toeneemt.
  • Calorie_Burnage neemt toe met 5,84 als de duur met één toeneemt.

Toegang tot de P-waarde

Kijk naar de P-waarde voor elke coëfficiënt.

  • P-waarde is 0,00 voor Average_Pulse, Duration en Intercept.
  • De P-waarde is statistisch significant voor alle variabelen, aangezien deze kleiner is dan 0,05.

Dus hier kunnen we concluderen dat Average_Pulse en Duration een relatie heeft met Calorie_Burnage.


Aangepast R-kwadraat

Er is een probleem met R-kwadraat als we meer dan één verklarende variabele hebben.

R-kwadraat zal bijna altijd toenemen als we meer variabelen toevoegen, en zal nooit afnemen.

Dit komt omdat we meer gegevenspunten toevoegen rond de lineaire regressiefunctie.

Als we willekeurige variabelen toevoegen die geen invloed hebben op Calorie_Burnage, lopen we het risico om ten onrechte te concluderen dat de lineaire regressiefunctie goed past. Aangepast R-kwadraat corrigeert voor dit probleem.

Het is daarom beter om naar de aangepaste R-kwadraatwaarde te kijken als we meer dan één verklarende variabele hebben.

Het aangepaste R-kwadraat is 0,814.

De waarde van R-kwadraat ligt altijd tussen 0 en 1 (0% tot 100%).

  • Een hoge R-kwadraatwaarde betekent dat veel gegevenspunten dicht bij de lineaire regressiefunctielijn liggen.
  • Een lage R-kwadraatwaarde betekent dat de lineaire regressiefunctielijn niet goed bij de gegevens past.

Conclusie: het model past goed bij het datapunt!

Gefeliciteerd! Je hebt nu de laatste module van de data science bibliotheek afgerond.