Data Science - Lineární regrese


Chybí nám jedna důležitá proměnná, která ovlivňuje Calorie_Burnage, a to Trvání tréninku.

Duration v kombinaci s Average_Pulse společně vysvětlí Calorie_Burnage přesněji.


Lineární regrese

Termín regrese se používá, když se snažíte najít vztah mezi proměnnými.

Ve strojovém učení a ve statistickém modelování se tento vztah používá k předpovídání výsledku událostí.

V tomto modulu se budeme zabývat následujícími otázkami:

  • Můžeme dojít k závěru, že Average_Pulse a Duration souvisí s Calorie_Burnage?
  • Můžeme použít Average_Pulse a Duration k předpovědi Calorie_Burnage?

Metoda nejmenších čtverců

Lineární regrese využívá metodu nejmenších čtverců.

Koncept je nakreslit čáru přes všechny vynesené datové body. Čára je umístěna tak, aby minimalizovala vzdálenost ke všem datovým bodům.

Vzdálenost se nazývá „zbytky“ nebo „chyby“.

Červené přerušované čáry představují vzdálenost od datových bodů k nakreslené matematické funkci.

Lineární regrese - nejmenší čtverec

Lineární regrese pomocí jedné vysvětlující proměnné

V tomto příkladu se pokusíme předpovědět Calorie_Burnage s Average_Pulse pomocí lineární regrese:

Příklad

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

Vysvětlený příklad:

  • Importujte moduly, které potřebujete: Pandy, matplotlib a Scipy
  • Izolujte Average_Pulse jako x. Izolujte spalování kalorií jako y
  • Získejte důležité klíčové hodnoty pomocí: slope, intercept, r, p, std_err = stats.linregress(x, y)
  • Vytvořte funkci, která použije hodnoty sklonu a průsečíku k vrácení nové hodnoty. Tato nová hodnota představuje místo, kde na ose y bude umístěna odpovídající hodnota x
  • Proveďte každou hodnotu pole x funkcí. Výsledkem bude nové pole s novými hodnotami pro osu y: mymodel = seznam(map(myfunc, x))
  • Nakreslete původní bodový graf: plt.scatter(x, y)
  • Nakreslete čáru lineární regrese: plt.plot(x, mymodel)
  • Definujte maximální a minimální hodnoty osy
  • Označte osu: „Average_Pulse“ a „Calorie_Burnage“

Výstup:

Lineární regrese - Jedna proměnná - nejmenší čtverec

Myslíte si, že je linka schopna přesně předpovědět Calorie_Burnage?

Ukážeme, že samotná proměnná Average_Pulse nestačí k přesné predikci Calorie_Burnage.