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