Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ed:lab_04 [2024/03/10 21:56]
pszwed [1. Cechy wielomianowe 2 stopnia]
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  ''LinearRegressionPolynomialFeaturesOrderTwo''** **Umieść kod w klasie  ''LinearRegressionPolynomialFeaturesOrderTwo''**
 +
 +**Ponieważ przetwarzane są kolejne zbiory, najwygodniej będzie umieścić kod w funkcji postaci\\
 +''static void processDataset(SparkSession spark,String filename,Function<Double,Double> f_true)''**
 +
  
 **1.** Dodaj do zbioru danych kolumnę ''X2'' zawierającą po prostu wynik wyrażenia "X*X" **1.** Dodaj do zbioru danych kolumnę ''X2'' zawierającą po prostu wynik wyrażenia "X*X"
Line 96: Line 100:
 **Kod umieść w klasie ''LinearRegressionPolynomialFeaturesPipeline''** **Kod umieść w klasie ''LinearRegressionPolynomialFeaturesPipeline''**
  
-**Ponieważ przetwarzane są kolejne zbiory, najlepiej umieść kod w funkcji postaci\\+**Ponieważ przetwarzane są kolejne zbiory, najwygodniej będzie umieścić kod w funkcji postaci\\
 ''static void processDataset(SparkSession spark,String filename,int degree,Function<Double,Double> f_true)''** ''static void processDataset(SparkSession spark,String filename,int degree,Function<Double,Double> f_true)''**
  
  
-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: ''Pipeline'', którego elementami są wstępne przetwarzanie danych i budowa modelu estymatora. Rozszerzenie cech o cechy wielomianowe jest dokonywane za pomocą odpowiedniej funkcji transformującej dane tablicowe :  ''PolynomialExpansion''.+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: ''Pipeline'', którego elementami są wstępne przetwarzanie danych i budowa modelu estymatora.  
 + 
 +Rozszerzenie cech o cechy wielomianowe jest dokonywane za pomocą odpowiedniej funkcji transformującej dane tablicowe :  ''PolynomialExpansion''.
  
 ==== Budowa ciągu przetwarzania  ==== ==== Budowa ciągu przetwarzania  ====
Line 173: Line 179:
 **2.** Zamiana wartości double na ''Row'' **2.** Zamiana wartości double na ''Row''
  
-Przeiteruj przez elementy fx i dla każdego z nich utwórz obiekt ''Row'', np. wołając ''Row r = RowFactory.create(d);'' lub odpowiednią funkcje strumienia. Zbierz wynik w ''List<Row> rows''+Przeiteruj przez elementy fx i dla każdego z nich utwórz obiekt ''Row'', np. wołając ''Row r = RowFactory.create(d);'' lub umieść takie odwzorowanie w odpowiedniej funkcji strumienia. Zbierz wynik w ''List<Row> rows''
  
 **3.** Zdefiniuj schemat i utwórz zbiór danych: **3.** Zdefiniuj schemat i utwórz zbiór danych:
Line 282: Line 288:
   * ''xy-005.csv'' dla cech wielomianowych 2 stopnia   * ''xy-005.csv'' dla cech wielomianowych 2 stopnia
  
-Zapisz rysunki, zbierz metryki.+Zapisz rysunki metryki.
  
 ==== Rozwiązanie 2 ==== ==== Rozwiązanie 2 ====
Line 299: Line 305:
 Można oczywiście ustawić seed i otrzymać powtarzalne wyniki (np. seed =3 wydaje się całkiem dobry). Można oczywiście ustawić seed i otrzymać powtarzalne wyniki (np. seed =3 wydaje się całkiem dobry).
  
-**2.** Zbierz w tabelce metryki dla obu sposobów ustalania podziału  +**2.** Wróć do poprzedniego rozwiązania
- +
-**3.** 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. 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.
  
Line 309: Line 313:
 df = df.orderBy(org.apache.spark.sql.functions.rand(3)); df = df.orderBy(org.apache.spark.sql.functions.rand(3));
 </code> </code>
 +
 +**3.** Zbierz w tabelce metryki dla wszystkich sposobów ustalania podziału 
 +
  
    
  
ed/lab_04.1710104203.txt.gz · Last modified: 2024/03/10 21:56 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0