Analiza danych — regresja liniowa


Brakuje nam jednej ważnej zmiennej, która wpływa na spalanie kalorii, czyli czas trwania sesji treningowej.

Czas trwania w połączeniu z parametrem Average_Pulse razem dokładniej wyjaśni kalorie_spalone.


Regresja liniowa

Termin regresja jest używany, gdy próbujesz znaleźć związek między zmiennymi.

W uczeniu maszynowym i modelowaniu statystycznym ta relacja służy do przewidywania wyniku zdarzeń.

W tym module omówimy następujące pytania:

  • Czy możemy stwierdzić, że Average_Pulse i Duration są powiązane z Calorie_Burnage?
  • Czy możemy użyć wartości Average_Pulse i Duration do przewidzenia spalonych kalorii?

Metoda najmniejszych kwadratów

Regresja liniowa wykorzystuje metodę najmniejszych kwadratów.

Koncepcja polega na narysowaniu linii przez wszystkie wykreślone punkty danych. Linia jest umieszczona w taki sposób, że minimalizuje odległość do wszystkich punktów danych.

Odległość nazywana jest „pozostałościami” lub „błędami”.

Czerwone przerywane linie reprezentują odległość od punktów danych do narysowanej funkcji matematycznej.

Regresja liniowa — najmniejszy kwadrat

Regresja liniowa przy użyciu jednej zmiennej objaśniającej

W tym przykładzie spróbujemy przewidzieć spalanie kalorii za pomocą wartości Average_Pulse za pomocą regresji liniowej:

Przykład

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

Przykład wyjaśniony:

  • Zaimportuj potrzebne moduły: Pandas, matplotlib i Scipy
  • Izoluj Average_Pulse jako x. Izoluj spalanie kalorii jako y
  • Uzyskaj ważne wartości klucza za pomocą: nachylenie, przecięcie, r, p, std_err = stats.linregress(x, y)
  • Utwórz funkcję, która używa wartości nachylenia i przecięcia, aby zwrócić nową wartość. Ta nowa wartość oznacza, gdzie na osi y zostanie umieszczona odpowiednia wartość x
  • Uruchom każdą wartość tablicy x przez funkcję. Spowoduje to powstanie nowej tablicy z nowymi wartościami dla osi y: mymodel = list(map(myfunc, x))
  • Narysuj oryginalny wykres punktowy: plt.scatter(x, y)
  • Narysuj linię regresji liniowej: plt.plot(x, mymodel)
  • Określ maksymalne i minimalne wartości osi
  • Oznacz oś: „Average_Pulse” i „Calorie_Burnage”

Wyjście:

Regresja liniowa — jedna zmienna — najmniejszy kwadrat

Czy uważasz, że linia jest w stanie precyzyjnie przewidzieć Calorie_Burnage?

Pokażemy, że sama zmienna Average_Pulse nie wystarczy do precyzyjnego przewidywania liczby kalorii.