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 18:53] pszwed |
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 233: | Line 240: | ||
===== 4. Podział na zbiór uczący i testowy ===== | ===== 4. Podział na zbiór uczący i testowy ===== | ||
- | Podziały przetestujemy na pliku '' | ||
==== Rozwiązanie 1 ==== | ==== Rozwiązanie 1 ==== | ||
Line 278: | Line 284: | ||
**5.** Wydrukuj wartości metryk i obejrzyj wykresy | **5.** Wydrukuj wartości metryk i obejrzyj wykresy | ||
- | < | + | Podziały przetestuj na plikach |
- | Scores on training set: r2=0.63 RMSE=317.19 | + | * '' |
- | Scores on test set: r2=-1.02 RMSE=647.06 | + | * '' |
+ | |||
+ | Zapisz rysunki i metryki. | ||
+ | |||
+ | ==== Rozwiązanie 2 ==== | ||
+ | |||
+ | Zamień sposób podziału na losowy (np. zakomentuj poprzedni kod lub utwórz kopię klasy). | ||
+ | |||
+ | < | ||
+ | var dfs = df.randomSplit(new double[]{0.7,0.3}); | ||
+ | var df_train | ||
+ | var df_test | ||
</ | </ | ||
+ | |||
+ | **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 | ||
+ | |||
+ | |||
+ | |||