**Regresja Liniowa w Pythonie – Implementacja

W tej lekcji zagłębimy się w implementację regresji liniowej w języku Python. Nauczysz się, jak budować i oceniać proste modele regresji liniowej, używając bibliotek takich jak scikit-learn. Poznasz podstawowe pojęcia i praktyczne zastosowania tego fundamentalnego algorytmu uczenia maszynowego.

Learning Objectives

  • Zrozumieć i zdefiniować regresję liniową.
  • Zainstalować i zaimportować niezbędne biblioteki Python.
  • Zaimplementować model regresji liniowej w Pythonie przy użyciu scikit-learn.
  • Ocenić wydajność modelu regresji liniowej przy użyciu kluczowych metryk.

Lesson Content

Wprowadzenie do Regresji Liniowej

Regresja liniowa to algorytm uczenia maszynowego, który służy do przewidywania wartości ciągłych na podstawie danych wejściowych. Zakłada on liniową zależność między zmienną objaśnianą (przewidywaną) a zmiennymi objaśniającymi (wejściowymi). Innymi słowy, model próbuje znaleźć najlepszą linię (w przypadku dwóch zmiennych) lub hiperpowierzchnię (w przypadku więcej niż dwóch zmiennych), która najlepiej pasuje do danych. Pomyśl o przewidywaniu ceny mieszkania na podstawie jego powierzchni – to klasyczny przykład regresji liniowej. Najważniejsze pojęcie to 'best fit line' – linia najlepiej dopasowana do punktów danych, minimalizująca błąd między przewidywanymi a rzeczywistymi wartościami.

Instalacja i Import Bibliotek

Pracować będziemy głównie z biblioteką scikit-learn (sklearn), która oferuje proste i efektywne narzędzia do modelowania. Upewnij się, że masz ją zainstalowaną. Jeśli nie, użyj komendy: pip install scikit-learn. Oprócz tego, będziemy korzystać z numpy do operacji matematycznych i matplotlib do wizualizacji. Po zainstalowaniu, zaimportuj je na początku swojego kodu:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

Implementacja Modelu Regresji Liniowej w Pythonie

Zacznijmy od stworzenia prostych danych. Załóżmy, że chcemy przewidzieć sprzedaż lodów na podstawie temperatury. Stwórzmy zatem zmienną temperatura (w stopniach Celsjusza) i zmienną sprzedaz (w sztukach). Potem, podzielimy dane na zbiór treningowy i testowy. To pozwoli nam wytrenować model na jednym zestawie danych i sprawdzić jego wydajność na innym, niewidzianym wcześniej:

temperature = np.array([15, 18, 22, 25, 30, 32, 35, 38, 40, 42])
sprzedaz = np.array([50, 65, 80, 95, 110, 120, 130, 140, 150, 160])

# Przekształcamy dane do odpowiedniego kształtu dla sklearn (2D array)
temperature = temperature.reshape(-1, 1)

# Podział danych na zbiór treningowy i testowy
temperature_train, temperature_test, sprzedaz_train, sprzedaz_test = train_test_split(temperature, sprzedaz, test_size=0.2, random_state=42)

# Tworzymy model regresji liniowej
model = LinearRegression()

# Trenujemy model na danych treningowych
model.fit(temperature_train, sprzedaz_train)

# Dokonujemy predykcji na danych testowych
sprzedaz_pred = model.predict(temperature_test)

# Wyświetlamy wyniki
print("Współczynniki:", model.coef_)
print("Wyraz wolny:", model.intercept_)
print("Predykcje:", sprzedaz_pred)

Ocena Wydajności Modelu

Po wytrenowaniu modelu, musimy ocenić jego jakość. Używamy do tego metryk. Najpopularniejsze to:

  • Błąd średniokwadratowy (Mean Squared Error - MSE): Mierzy średnią kwadratów różnic między przewidywanymi a rzeczywistymi wartościami. Im mniejszy MSE, tym lepiej.
  • Współczynnik determinacji (R-squared): Mierzy, jaką część wariancji zmiennej objaśnianej wyjaśnia model. R-squared bliskie 1 oznacza, że model dobrze pasuje do danych.
# Obliczamy MSE
mse = mean_squared_error(sprzedaz_test, sprzedaz_pred)
print("Błąd średniokwadratowy (MSE):", mse)

# Obliczamy R-squared
r2 = r2_score(sprzedaz_test, sprzedaz_pred)
print("Współczynnik determinacji (R-squared):", r2)

# Wizualizacja wyników (opcjonalnie)
plt.scatter(temperature_test, sprzedaz_test, color='black')
plt.plot(temperature_test, sprzedaz_pred, color='blue', linewidth=3)
plt.xlabel("Temperatura (°C)")
plt.ylabel("Sprzedaż (szt.)")
plt.title("Regresja liniowa: Sprzedaż lodów vs. Temperatura")
plt.show()

Deep Dive

Explore advanced insights, examples, and bonus exercises to deepen understanding.

Rozszerzona Lekcja: Regresja Liniowa w Pythonie

Witamy na piątym dniu nauki! Kontynuujemy naszą przygodę z modelowaniem i uczeniem maszynowym, zagłębiając się głębiej w świat regresji liniowej. Dzisiaj nie tylko powtórzymy i utrwalimy wiedzę z poprzednich dni, ale także odkryjemy bardziej zaawansowane aspekty i praktyczne zastosowania.

Deep Dive: Zaawansowane Perspektywy Regresji Liniowej

W poprzedniej lekcji skupiliśmy się na prostej regresji liniowej (z jedną zmienną niezależną). Teraz rozważmy kilka zaawansowanych koncepcji i alternatywnych podejść:

  • Regresja Wieloraka: Co się dzieje, gdy mamy więcej niż jedną zmienną niezależną? Model staje się bardziej skomplikowany, ale zasada działania pozostaje ta sama. Przykład: próba przewidywania ceny mieszkania na podstawie powierzchni, liczby pokoi i lokalizacji.
  • Normalizacja Danych: Zanim wprowadzimy dane do modelu, warto je znormalizować. Ujednolica to skalę danych, co może przyspieszyć uczenie i poprawić wyniki, zwłaszcza gdy zmienne mają różne jednostki. Najpopularniejsze metody to standaryzacja (odejmowanie średniej i dzielenie przez odchylenie standardowe) i skalowanie do zakresu [0, 1].
  • Wpływ Outlierów: Obserwacje odstające (outliery) mogą mieć duży wpływ na linię regresji, zniekształcając model. Istnieją techniki radzenia sobie z outlierami, np. ich usunięcie (ostrożnie!) lub zastosowanie bardziej odpornych metod regresji.
  • Ocena Modelu: Oprócz RMSE (średni kwadrat błędu) poznaj inne metryki, takie jak R-kwadrat (współczynnik determinacji), które mierzy, jaka część wariancji danych jest wyjaśniana przez model. R-kwadrat waha się od 0 do 1, gdzie 1 oznacza idealne dopasowanie.

Przykład w Pythonie: Regresja Wieloraka
Załóżmy, że chcemy przewidzieć sprzedaż lodów (y) na podstawie temperatury (x1) i liczby turystów (x2).

        
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score

# Przykładowe dane (temperatura, liczba turystów, sprzedaż)
dane = {'temperatura': [20, 25, 30, 22, 28],
        'turysci': [100, 150, 200, 120, 180],
        'sprzedaz': [50, 75, 90, 60, 80]}
df = pd.DataFrame(dane)

# Przygotowanie danych
X = df[['temperatura', 'turysci']]  # Zmienne niezależne (dwie)
y = df['sprzedaz']  # Zmienna zależna

# Podział na zbiór treningowy i testowy
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Tworzenie i trenowanie modelu
model = LinearRegression()
model.fit(X_train, y_train)

# Ocena modelu
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
print(f"Współczynnik R-kwadrat: {r2}")
        
      

Bonus Exercises: Ćwiczenia dla Ugruntowania Wiedzy

  1. Ćwiczenie 1: Zbuduj model regresji liniowej, przewidujący cenę domu na podstawie powierzchni i liczby sypialni. Użyj przykładowego zestawu danych (możesz go znaleźć online lub stworzyć własny). Przetestuj różne metryki oceny modelu.
  2. Ćwiczenie 2: Zaprojektuj eksperyment, w którym sprawdzisz wpływ normalizacji danych na wydajność modelu regresji liniowej. Porównaj wyniki przed i po normalizacji danych.
  3. Ćwiczenie 3: Poszukaj w Internecie zestawu danych zawierającego dane o sprzedaży (np. sprzedaży książek, napojów, itp.). Zastosuj regresję liniową, aby przewidzieć sprzedaż na podstawie różnych czynników (np. reklama, cena, promocje).

Real-World Connections: Regresja Liniowa w Praktyce

Regresja liniowa jest szeroko stosowana w wielu dziedzinach:

  • Ekonomia: Przewidywanie zmian cen akcji, analiza wpływu wydatków reklamowych na sprzedaż.
  • Marketing: Szacowanie wpływu kampanii reklamowych, analiza lojalności klientów.
  • Finanse: Oszacowywanie ryzyka kredytowego, przewidywanie przyszłych zysków.
  • Medycyna: Analiza związku między dawką leku a jego działaniem, przewidywanie rozwoju choroby.
  • Meteorologia: Przewidywanie temperatury na podstawie historycznych danych i innych zmiennych (np. ciśnienia). Pamiętajmy, że model musi być regularnie aktualizowany, uwzględniając zmieniające się warunki.

Przykład z życia: Analizujesz sprzedaż lodów w budce w wakacje. Zauważasz, że sprzedaż jest skorelowana z temperaturą i liczbą turystów. Model regresji liniowej pozwala ci przewidzieć sprzedaż na nadchodzący dzień, co pomaga w planowaniu zakupów i zatowarowaniu. Możesz nawet użyć modelu do oceny, czy warto wynająć dodatkowego pracownika w dany dzień.

Challenge Yourself: Dodatkowe Wyzwania

Spróbuj zaimplementować regresję liniową od podstaw, bez użycia biblioteki scikit-learn. Użyj metody najmniejszych kwadratów do znalezienia parametrów modelu. Spróbuj zaimplementować funkcję regularizacji L1 (Lasso) i L2 (Ridge) i porównaj ich wpływ na model.

Further Learning: Kierunki Dalszego Rozwoju

  • Regresja Logistyczna: Model do klasyfikacji (np. przewidywanie, czy klient kupi produkt).
  • Modele oparte na drzewach decyzyjnych: (np. drzewa, lasy losowe, Gradient Boosting) Bardzo popularne i skuteczne algorytmy uczenia maszynowego.
  • Statystyka: Zrozumienie pojęć takich jak rozkład normalny, przedziały ufności, hipotezy.
  • Szkolenia online: Platformy takie jak Coursera, edX, czy Udemy oferują zaawansowane kursy z uczenia maszynowego.

Interactive Exercises

Ćwiczenie 1: Prosta Regresja – Dane o Sprzedaży i Cenie

Stwórz własny zbiór danych dotyczących sprzedaży pewnego produktu. Dane powinny zawierać cenę produktu i ilość sprzedanych sztuk. Zaimplementuj model regresji liniowej do przewidywania sprzedaży na podstawie ceny. Oblicz MSE i R-squared. Zwizualizuj wyniki.

Ćwiczenie 2: Modyfikacja i Analiza Danych

Zmień wartości w swoim zbiorze danych z poprzedniego ćwiczenia. Jak wpływa to na wyniki (MSE i R-squared)? Spróbuj dodać outlier (wartość odstającą) do danych. Co się dzieje z modelem? Jak outlier wpływa na 'best fit line'?

Ćwiczenie 3: Wizualizacja i Interpretacja

Dodaj do swojego kodu wizualizację (np. za pomocą biblioteki matplotlib) pokazującą punkty danych oraz linię regresji. Na podstawie wizualizacji i obliczonych metryk, spróbuj zinterpretować wyniki. Czy model dobrze pasuje do danych? Jakie są mocne i słabe strony tego modelu?

Ćwiczenie 4: Regresja z dwoma zmiennymi

Utwórz zbiór danych z dwiema zmiennymi niezależnymi (np. temperatura i wilgotność), i jedną zmienną zależną (np. sprzedaż). Zaimplementuj regresję liniową z dwoma zmiennymi objaśniającymi. Zinterpretuj wyniki i współczynniki.

Knowledge Check

Question 1: Która z poniższych metryk służy do oceny jakości modelu regresji?

Question 2: Co mierzy współczynnik determinacji (R-squared)?

Question 3: Która biblioteka jest najczęściej używana do implementacji regresji liniowej w Pythonie?

Question 4: Jaki jest cel podziału danych na zbiór treningowy i testowy?

Question 5: Jaką funkcję w scikit-learn używamy do trenowania modelu regresji liniowej?

Practical Application

Zaprojektuj prosty model do przewidywania cen mieszkań w Twojej okolicy. Zbierz dane o powierzchni, lokalizacji, liczbie pokoi itp. Użyj regresji liniowej do przewidywania cen. Porównaj wyniki z rzeczywistymi cenami mieszkań.

Key Takeaways

Next Steps

Przygotuj się na następną lekcję, która skupi się na regresji wielomianowej i innych bardziej zaawansowanych technikach regresji. Zastanów się, w jaki sposób można ulepszyć model regresji liniowej.

Your Progress is Being Saved!

We're automatically tracking your progress. Sign up for free to keep your learning paths forever and unlock advanced features like detailed analytics and personalized recommendations.

Next Lesson (Day 6)