Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ed:lab_04 [2024/03/10 19:15] pszwed [Rozwiązanie 2] |
ed:lab_04 [2024/03/21 02:25] (current) pszwed [Funkcja do rysowania wykresów] |
||
---|---|---|---|
Line 12: | Line 12: | ||
===== 1. Cechy wielomianowe 2 stopnia ===== | ===== 1. Cechy wielomianowe 2 stopnia ===== | ||
**Umieść kod w klasie | **Umieść kod w klasie | ||
+ | |||
+ | **Ponieważ przetwarzane są kolejne zbiory, najwygodniej będzie umieścić kod w funkcji postaci\\ | ||
+ | '' | ||
+ | |||
**1.** Dodaj do zbioru danych kolumnę '' | **1.** Dodaj do zbioru danych kolumnę '' | ||
Line 42: | Line 46: | ||
**4.** Wyświetl wyniki. Przy wyświetlaniu aproksymowanej funkcji wywoływana jest funkcja '' | **4.** Wyświetl wyniki. Przy wyświetlaniu aproksymowanej funkcji wywoływana jest funkcja '' | ||
- | **5.** Przetwórz wszystkie pliki i wyświetl ich wykresy. | + | **5.** Przetwórz wszystkie pliki i wyświetl ich wykresy |
Niewątpliwie ciekawym wykresem jest dopasowanie wielomianu 2-stopnia do danych wygenerowanych z wielomianu 3 stopnia | Niewątpliwie ciekawym wykresem jest dopasowanie wielomianu 2-stopnia do danych wygenerowanych z wielomianu 3 stopnia | ||
Line 96: | Line 100: | ||
**Kod umieść w klasie '' | **Kod umieść w klasie '' | ||
- | **Ponieważ przetwarzane są kolejne zbiory, | + | **Ponieważ przetwarzane są kolejne zbiory, |
+ | '' | ||
- | Dodawanie manualne cech jako kolumn zbioru danych jest zbyt żmudne - zachodzi konieczność nazywania tych kolumn, później modyfikacji kodu w kilku miejscach. Raczej buduje się ciąg przetwarzania: | + | Dodawanie manualne cech jako kolumn zbioru danych jest zbyt żmudne - zachodzi konieczność nazywania tych kolumn, później modyfikacji kodu w kilku miejscach. Raczej buduje się ciąg przetwarzania: |
+ | |||
+ | Rozszerzenie cech o cechy wielomianowe jest dokonywane za pomocą odpowiedniej funkcji transformującej dane tablicowe : '' | ||
==== Budowa ciągu przetwarzania | ==== Budowa ciągu przetwarzania | ||
Line 168: | Line 175: | ||
</ | </ | ||
- | Aby przetworzyć je za pomocą '' | + | Aby przetworzyć je za pomocą '' |
**2.** Zamiana wartości double na '' | **2.** Zamiana wartości double na '' | ||
- | Przeiteruj przez elementy fx i dla każdego z nich utwórz obiekt '' | + | Przeiteruj przez elementy fx i dla każdego z nich utwórz obiekt '' |
**3.** Zdefiniuj schemat i utwórz zbiór danych: | **3.** Zdefiniuj schemat i utwórz zbiór danych: | ||
Line 281: | Line 288: | ||
* '' | * '' | ||
- | Zapisz rysunki, zbierz | + | Zapisz rysunki |
==== Rozwiązanie 2 ==== | ==== Rozwiązanie 2 ==== | ||
- | Zamień sposób podziału na losowy (np. zakomentuj poprzedni kod). | + | Zamień sposób podziału na losowy (np. zakomentuj poprzedni kod lub utwórz kopię klasy). |
<code java> | <code java> | ||
Line 293: | Line 300: | ||
</ | </ | ||
+ | **1.** Przetestuj takie same konfiguracje zbiorów danych i stopni wielomianu | ||
+ | |||
+ | Podział jest losowy. Może się zdarzyć, że w danym losowaniu osiągniemy nie najlepszy podział | ||
+ | Można oczywiście ustawić seed i otrzymać powtarzalne wyniki (np. seed =3 wydaje się całkiem dobry). | ||
+ | |||
+ | **2.** Wróć do poprzedniego rozwiązania | ||
+ | Stały podział może być całkiem dobry, jeżeli wcześniej dane zostały losowo pomieszane. Jest to częste podejście przy publikacji zbiorów testowych. | ||
+ | |||
+ | Dodaj przed podziałem następujący kod i porównaj wyniki: | ||
+ | |||
+ | <code java> | ||
+ | df = df.orderBy(org.apache.spark.sql.functions.rand(3)); | ||
+ | </ | ||
+ | |||
+ | **3.** Zbierz w tabelce metryki dla wszystkich sposobów ustalania podziału | ||
+ | |||
+ | |||
+ | |||