Jak dobre jest dopasowanie?
Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 39 z 64.
Każda chmura ma przypisaną prostą, więc dopasowania wymagają oceny. Żeglarz zapisywał prędkość wiatru i łodzi: porównaj sumę kwadratów odchyleń dla prostej z sumą dla średniej, czyli najprostszego przewidywania:
R kwadrat to część tego rozrzutu, którą wyjaśnia prosta:
wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum() # dopasowanie: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum() # średnia: 16.23
print(np.round(1 - ss_res / ss_tot, 3))To wypisuje 0.979: linia wyjaśnia 98% rozrzutu prędkości. 1 oznacza idealną linię, 0 — wynik nie lepszy niż średnia.
To standardowa ocena modelu przewidującego liczby. W przypadku dopasowanej prostej jest równa r squared.
Wyzwanie
ŚredniNa farmie grzybów zapisano dane z 16 grządek uprawowych w pliku mushrooms.csv. Program odczytuje nazwę kolumny, a kod początkowy dopasowuje prostą przewidującą harvest_kg na jej podstawie. W raporcie potrzebna jest wartość r_squared, która jest jeszcze pusta.
- Uzupełnij
r_squared(y, predicted), aby zwracała współczynnik determinacji R². - Na końcu wypisz wynik kontrolny: korelację między
xiy, podniesioną do kwadratu, pomnożoną przez 100 i zaokrągloną do 1 miejsca po przecinku.
Dla innej farmy i danych wejściowych humidity:
humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%Spróbuj swoich sił
import numpy as np
import pandas as pd
# Zwraca współczynnik R kwadrat dla przewidywań y
def r_squared(y, predicted):
# Wpisz tutaj swój kod
return 0
beds = pd.read_csv("mushrooms.csv")
column = input()
# Nie zmieniaj poniższych wierszy
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")
# Wpisz poniżej swój kod
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Statystyka w uczeniu maszynowym
1Położenie i rozproszenie
Średnia i medianaPercentyle i kwartyleWariancja i odchylenie standardowePróba czy populacja?Najczęściej występująca wartośćPodsumowanie: czasy dostaw4Próby i populacje
Populacja i próbaŚrednie z prób się różniąRozkład próbkowaniaWiększe próby, mniej szumuPodsumowanie: ankietowanie mieszkańców7Linie trendu
ResztyDopasowanie metodą najmniejszych kwadratówRysowanie dopasowanej prostejPrzewidywanie za pomocą prostejJak dobre jest dopasowanie?Podsumowanie: godziny ćwiczeń2Rozkłady
Histogramy gęstościKształty danychKrzywa normalnaReguła 68-95-99,7Wyniki standaryzowane (Z-scores)Podsumowanie: czas pracy baterii5Obserwacje odstające
Wykresy pudełkoweReguła IQRReguła Z-scorePostępowanie z obserwacjami odstającymiPodsumowanie: błędy czujników3Prawdopodobieństwo przez symulację
Prawdopodobieństwo jako częstośćPrawo wielkich liczbSumy oczekWartość oczekiwanaPrawdopodobieństwo warunkowePodsumowanie: szanse na stoisku z kośćmi6Relacje
Odczytywanie wykresów punktowychKorelacjaMacierz korelacjiMapy cieplne korelacjiKorelacja nie oznacza przyczynowościPodsumowanie: lody i słońcePoćwicz samodzielnie: Kompilator Python online