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_08 [2024/04/09 15:47]
pszwed
ed:lab_08 [2024/04/24 23:20] (current)
pszwed [4. LogisticRegressionGrid - tworzenie tabeli ocen]
Line 14: Line 14:
  
 === Zbiory danych === === Zbiory danych ===
-  * {{ :ed:egzamin-cpp.csv |egzamin-cpp.csv}} - zanonimizowane wyniki zaliczeń/egzaminu z C i C++ w 2016 roku +  * {{ :ed:egzamin-cpp.csv |egzamin-cpp.csv}} - poddane anonimizacji wyniki zaliczeń/egzaminu z C i C++ w 2016 roku 
   * {{ :ed:grid.csv |grid.csv}} - kombinacje ocen    * {{ :ed:grid.csv |grid.csv}} - kombinacje ocen 
  
Line 88: Line 88:
 </code> </code>
  
-**2.** Regresja logistyczna wymaga, aby atrybutów wejściowe były typu numerycznego. Jets też metodą klasyfikacji binarnej (etykiety powinny mieć wartości 0 i 1)+**2.** Regresja logistyczna wymaga, aby atrybutów wejściowe były typu numerycznego. Jest też metodą klasyfikacji binarnej (etykiety powinny mieć wartości 0 i 1)
   * przekonwertuj datę  za pomocą funkcji ''unix_timestamp'' - nadaj nowej kolumnie nazwę ''timestamp''   * przekonwertuj datę  za pomocą funkcji ''unix_timestamp'' - nadaj nowej kolumnie nazwę ''timestamp''
   * Dodaj kolumnę ''Wynik'' będącą wynikiem testu, czy ''Egzamin>=3.0'' - użyj funkcji SQL IF()   * Dodaj kolumnę ''Wynik'' będącą wynikiem testu, czy ''Egzamin>=3.0'' - użyj funkcji SQL IF()
Line 139: Line 139:
 **3.** Zinterpretuj współczynniki równania regresji (napisz kod lub zamieść wykonane obliczenia). Pamiętaj, że timestamp jest wyrażony w sekundach. **3.** Zinterpretuj współczynniki równania regresji (napisz kod lub zamieść wykonane obliczenia). Pamiętaj, że timestamp jest wyrażony w sekundach.
  
-Poniższe wyniki były wygenerowane za pomocą kodu. W praktyce wynik nie zależy od daty...+Poniższe wyniki były wygenerowane programowo. W praktyce wynik nie zależy od daty...
 <code> <code>
 Wzrost OcenaC o 1 zwiększa logit o 0.719097, a szanse zdania razy 2.052578 czyli o 105.257821% Wzrost OcenaC o 1 zwiększa logit o 0.719097, a szanse zdania razy 2.052578 czyli o 105.257821%
Line 242: Line 242:
 ===== 3. LogisticRegressionScores - ocena wyników ===== ===== 3. LogisticRegressionScores - ocena wyników =====
  
-Napisz funkcję tarinAndTest, która:+Napisz funkcję trainAndTest, która:
  
   * dokona podziału na zbiór treningowy i testowy   * dokona podziału na zbiór treningowy i testowy
Line 410: Line 410:
 ===== 4. LogisticRegressionGrid - tworzenie tabeli ocen ===== ===== 4. LogisticRegressionGrid - tworzenie tabeli ocen =====
  
 +Celem jest utworzenie tabeli ocen postaci, jak poniżej
 +
 +<code>
 ++--------------+------+----------+--------+--------+
 +|  ImieNazwisko|OcenaC|     DataC|OcenaCpp|   Wynik|
 ++--------------+------+----------+--------+--------+
 +|'Xxxxx Yyyyyy'  3.0|2016-01-17|     2.0|Nie zdał|
 +|'Xxxxx Yyyyyy'  3.0|2016-01-17|     3.0|Nie zdał|
 +|'Xxxxx Yyyyyy'  3.0|2016-01-17|     3.5|    Zdał|
 +|'Xxxxx Yyyyyy'  3.0|2016-01-17|     4.0|    Zdał|
 +|'Xxxxx Yyyyyy'  3.0|2016-01-17|     4.5|    Zdał|
 +|'Xxxxx Yyyyyy'  3.0|2016-01-17|     5.0|    Zdał|
 +|'Xxxxx Yyyyyy'  3.5|2016-01-17|     2.0|Nie zdał|
 +|'Xxxxx Yyyyyy'  3.5|2016-01-17|     3.0|Nie zdał|
 +|'Xxxxx Yyyyyy'  3.5|2016-01-17|     3.5|    Zdał|
 +|'Xxxxx Yyyyyy'  3.5|2016-01-17|     4.0|    Zdał|
 +
 +...
 +</code>
 +
 +**Uwaga:** wynik może się nieco różnić w zależności od konfiguracji, np. progu prawdopodobieństwa 
 +
 +**1.** Wytrenuj klasyfikator na zbiorze ''egzamin-cpp.csv''. Wykorzystuj kod z poprzedniej części, ustaw próg prawdopodobieństwa.
 +
 +**2.** Napisz funkcje
 +
 +<code java>
 +void addClassificationToGrid(SparkSession spark, LogisticRegressionModel lrModel)
 +</code>
 +
 +która:
 +  * Wczyta zbiór danych ''grid.csv''
 +  * Przetworzy daty, tak aby stały się wartościami numerycznymi
 +  * Skonfiguruje VectorAssembler
 +  * Wywoła funkcję predykcji zmiennej ''lrMpdel''
 +  * Usunie nadmiarowe kolumny
 +  * Za pomocą funkcji ''IF()'' SQL lub zarejestrowanej funkcji użytkownika UDF dokona konwersji etykiet //0->Nie zdał// oraz //1->Zdał//
 +  * Wyświetli wynik
 +  * Zapisze w pliku ''grid-with-classification.csv'' 
ed/lab_08.1712670424.txt.gz · Last modified: 2024/04/09 15:47 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0