Menu
CoddyTech

Przewidywanie wartości liczbowych

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 11 z 58.

Modele z tego rozdziału przewidują liczby. Pod koniec wykres pomyłek modelu pokaże, czego nie uwzględnił:

Wykres pomyłek modelu względem temperatury: punkty układają się w łuk od -280 do +140 i z powrotem, wokół przerywanej linii na poziomie 0, z etykietą: model nie uwzględnił krzywej

Zacznij od znanej Ci prostej. LinearRegression uczy się jej na podstawie tabeli X, w której każdy wiersz odpowiada jednej próbce, a każda kolumna jednej cesze:

from sklearn.linear_model import LinearRegression

area = np.array([60, 75, 90, 110, 130, 150])  # domy, w m²
price = np.array([215, 248, 290, 335, 385, 428])  # tysiące dolarów
X = area.reshape(-1, 1)  # 6 wierszy, 1 kolumna
model = LinearRegression()
model.fit(X, price)
print(np.round(model.coef_, 2), np.round(model.intercept_, 2))
print(np.round(np.polyfit(area, price, 1), 2))

Wypisuje ten sam wiersz dwa razy:

[2.39] 71.59
[ 2.39 71.59]

Sześć domów jako kropki, cena w zależności od powierzchni, gruba pomarańczowa linia LinearRegression i przerywana czarna linia np.polyfit dokładnie się pokrywają: cena = 2.39 * powierzchnia + 71.59

coef_ przechowuje jedno nachylenie dla każdej cechy: każdy dodatkowy m² dodaje 2.39 tysiąca dolarów. intercept_ to początek prostej przy 0 m². Następnie model.predict([[100]]) wycenia 100 m² na około 310.85 tysiąca.

challenge icon

Wyzwanie

Średni

Drukarnia nigdy nie publikowała swoich cen, ale masz dane z 10 wcześniejszych zleceń: pages i price w dolarach. Program odczytuje liczbę stron nowego zlecenia.

  1. Dopasuj LinearRegression do liczby stron w postaci tabeli z jedną kolumną.
  2. Wyświetl cenę za stronę (3 miejsca po przecinku) i opłatę początkową, czyli punkt przecięcia z osią (2 miejsca po przecinku).
  3. Wyświetl przewidywaną cenę nowego zlecenia (2 miejsca po przecinku).

Dla innej drukarni i wartości 120:

Per page: 0.095 dollars
Setup fee: 4.1 dollars
120 pages: 15.5 dollars

Spróbuj swoich sił

import numpy as np
from sklearn.linear_model import LinearRegression

# 10 poprzednich zleceń drukowania: liczba wydrukowanych stron i zapłacona cena w dolarach
pages = np.array([40, 75, 120, 160, 210, 260, 300, 380, 450, 520])
price = np.array([7.38, 12.6, 17.65, 20.69, 26.63, 32.18, 37.76, 46.4, 55.17, 60.89])
new_pages = int(input())

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online