Datawetenskap - Lineêre regressie


Ons mis een belangrike veranderlike wat Calorie_Burnage beïnvloed, wat die duur van die oefensessie is.

Duur in kombinasie met Average_Pulse sal saam Calorie_Burnage meer presies verduidelik.


Lineêre regressie

Die term regressie word gebruik wanneer jy probeer om die verband tussen veranderlikes te vind.

In Masjienleer en in statistiese modellering word daardie verhouding gebruik om die uitkoms van gebeure te voorspel.

In hierdie module sal ons die volgende vrae dek:

  • Kan ons aflei dat Gemiddelde_Puls en Duur verband hou met Kalorie_Verbranding?
  • Kan ons Average_Pulse and Duration gebruik om Calorie_Burnage te voorspel?

Kleinste Vierkante Metode

Lineêre regressie gebruik die kleinste kwadraat metode.

Die konsep is om 'n lyn deur al die geplote datapunte te trek. Die lyn is so geposisioneer dat dit die afstand na al die datapunte minimaliseer.

Die afstand word "residuele" of "foute" genoem.

Die rooi stippellyne verteenwoordig die afstand vanaf die datapunte na die getekende wiskundige funksie.

Lineêre regressie - Kleinste Vierkant

Lineêre regressie deur gebruik te maak van een verklarende veranderlike

In hierdie voorbeeld sal ons probeer om Calorie_Burnage met Average_Pulse te voorspel deur lineêre regressie te gebruik:

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 verduidelik:

  • Voer die modules in wat jy nodig het: Pandas, matplotlib en Scipy
  • Isoleer Average_Pulse as x. Isoleer Calorie_burnage as y
  • Kry belangrike sleutelwaardes met: helling, afsnit, r, p, std_err = stats.linregress(x, y)
  • Skep 'n funksie wat die helling- en snywaardes gebruik om 'n nuwe waarde terug te gee. Hierdie nuwe waarde verteenwoordig waar op die y-as die ooreenstemmende x-waarde geplaas sal word
  • Begin elke waarde van die x-skikking deur die funksie. Dit sal lei tot 'n nuwe skikking met nuwe waardes vir die y-as: mymodel = list(map(myfunc, x))
  • Teken die oorspronklike strooiplot: plt.scatter(x, y)
  • Trek die lyn van lineêre regressie: plt.plot(x, mymodel)
  • Definieer maksimum en minimum waardes van die as
  • Benoem die as: "Average_Pulse" en "Calorie_Burnage"

Uitset:

Lineêre regressie - Een veranderlike - Kleinste Vierkant

Dink jy dat die lyn Calorie_Burnage presies kan voorspel?

Ons sal wys dat die veranderlike Average_Pulse alleen nie genoeg is om presiese voorspelling van Calorie_Burnage te maak nie.