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.
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.
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
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)
Po wytrenowaniu modelu, musimy ocenić jego jakość. Używamy do tego metryk. Najpopularniejsze to:
# 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()
Explore advanced insights, examples, and bonus exercises to deepen understanding.
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.
W poprzedniej lekcji skupiliśmy się na prostej regresji liniowej (z jedną zmienną niezależną). Teraz rozważmy kilka zaawansowanych koncepcji i alternatywnych podejść:
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}")
Regresja liniowa jest szeroko stosowana w wielu dziedzinach:
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ń.
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.
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.
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'?
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?
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.
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ń.
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.
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.