Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

PYREGR - Python: Regresja

logo


Witajcie! Jest to drugi z serii tutoriali uczący Pythona, a w przyszłości być może nawet Cythona i Numby. Jeśli chcesz nauczyć się nowych, zaawansowanych konstrukcji to spróbuj rozwiązać kilka następnych zadań. Powodzenia! 


Machine Learning to ciekawa i ostatnio popularna dziedzina zajmująca się przetwarzaniem statystycznych danych. Zastanawiałeś się w jaki sposób IMDB czy Netflix rekomendują podobne filmy? ML opiera się na fundamentalnym problemie regresji, który stanowi motyw tego zadania. 

 

Zakładam że umiesz już posługiwać się tablicami w numpy'u. Jeśli nie, lepiej powróć do poprzednich zadań. W tym zadaniu będziesz potrzebował wielu z metod numpy'a. Wszystkie funkcje są dostępne w dokumentacji w zakładce Routines.



Zadanie

Linia trendu to funkcja liniowa, która jest jak najlepiej dopasowana do wartości w znanych punktach. Linia trendu stanowi teoretyczny model, pozwalający przewidywać wartości w nowych punktach, których faktycznie nie zmierzono. Twoim celem będzie obliczenie wartości w nieznanych jeszcze punktach, na podstawie wartości zmierzonych wcześniej. 

.


Wymiary macierzy i wektorów dla ułatwienia wzorów:


Linia trendu to funkcja liniowa h o wpółczynnikach oznaczonych Θ oraz zmiennych oznaczonych x.

.


Funkcja kosztu J mierzy "jak dokładnie" linia trendu h odpowiada wartościom y zmierzonym w punktach x. Zauważ że dla każdego z m punktów, xi jest wektorem gdzie xi,1 wynosi 1.

.


By dopasować linię trendu do danych, będziemy potrzebować pochodnej funkcji kosztu. 

.


Zaczynamy od inicjalizacji współczynników Θ zerowymi wartościami. 1000 razy, równocześnie przesuwamy współczynniki proporcjonalnie (razy 0.01) do pochodnych cząstkowych funkcji kosztu względem danego współczynnika. 


Przewidujemy wartości w nowych punktach zi używając funkcji trendu h.

.


Format I/O

Dane wejściowe zawierają cztery linie. Pierwsza linia zawiera liczby m (ilość znanych punktów) n (ilość zmiennych) q (ilość zapytań). Druga linia zawiera liczby x (argumenty znanych wartości, skonkatenowane kolejne wektory). Trzecia linia zawiera liczby y (znane wartości). Czwarta linia zawiera liczby z (argumenty zapytań, skonkatenowane kolejne wektory). 

Dane wyjściowe zawierają jedną linię. Linia zawiera q liczb zaokrąglonych do 2 miejsc po przecinku.

Przykładowe dane można pobrać tutaj.

 


Dodane przez:Arkadiusz Bulski
Data dodania:2015-01-21
Limit czasu wykonania programu:1s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:PYTHON PYPY PYTHON3
Pochodzenie::)
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.