Wprowadzanie do Data Mining

Laboratorium w semestrze letnim 2021/22 odbywa się we wtorki w godz. 13-15 w Pk1 WFAiIS.

Strona kursu w Moodle: https://moodle.umk.pl/WFAIIS/course/view.php?id=40

Zaliczenie zajęć odbywa się na podstawie rozwiązań zadań z laboratoriów.
Rozwiązania, w postaci notatników Jupyter (pliki *.ipynb), należy terminowo deponować na stronie kursu w Moodle.
W celu uzyskania zaliczenia należy rozwiązać min. 50% zadań.

Rozwiązanie muszą być wykonane samodzielnie. Nie jest dozwolone udostępnianie rozwiązań innym osobom

  • Robert Layton, Learning Data Mining with Python, 2015 (2017 wydanie 2) - dostęp on-line z biblioteki z sieci UMK
  • Pang-Ning Tan, Michael Steinbach, Anuj Karpatne, Introduction to Data Mining (Second Edition), WWW
  1. Przegląd metod Data Mining
  2. Nie za długi wstęp do python, jupyter, numpy, pandas, matlibplot, scikit-learn, seaborn
  3. Analiza statystyczna danych, wizualizacja danych
    • preprocessing: wykrywanie anomalii, braki w danych, dane odstające
  4. Regresja
    • Liniowa oraz wielomianowa
    • problem przeuczenia: underfitting/overfitting
  5. Klasyfikacja i ocena klasyfikatorów
    • regresja logistyczna
    • kNN
    • drzewa decyzyjne
    • SVM
    • walidacja krzyżowa (cross validation)
  6. Analiza skupień
    • k-means
    • metody hierarchiczne, dendrogramy
    • DBSCAN
  7. Text mining
    • worek słów (BOW)
  8. Przetwarzanie obrazów
    • PCA do kodowania obrazów
  9. Analiza szeregów czasowych (?)

Zajęcia realizowane są w języku Python z wykorzystaniem notatników Jupyter. W celu realizacji zadań można zainstalować na swoim komputerze środowisko programistyczne lub skorzystać z usług sieciowych umożliwiających edycję i uruchamianie notatników (Google Colab). Python oraz jupyter-notebook dostępne są również na serwerze studenckim polon7.fizyka.umk.pl

Google Colab lub Binder (zalecane)

    • dostęp do GPU
    • wymagane konto Google
    • zmienione notatniki można zapisać na Dysku Google
    • sesja aktywna dopóki jest otworzona w przeglądarce (max. 12h.)
    • tylko CPU, min. 1GB RAM
    • nie wymaga autoryzacji
    • brak możliwości zachowania zmian pomiędzy sesjami
    • sesja do 6 h., przerywana gdy brak aktywności przez 10 min

Lokalnie na własnym sprzęcie

Notatniki z zajęć można uruchamiać lokalnie na własnych komputerach. Należy w tym celu skonfigurować środowisko Python i Jupyter Notebook lub JupyterLab Wygodnie w tym celu użyć gotowej dystrybucji Anaconda, która zawiera Pythona, Jupyter oraz wiele przydatnych pakietów.

Serwery wydziałowe

Notatniki można również uruchamiać korzystając z serwera polon7 dostępnego w sieci lokalnej WFAiIS. Dostęp z zewnątrz sieci LAN wymaga aktualnego certyfikatu OpenVPN. Pracę można wówczas wykonywać w środowisku graficznym po zalogowaniu za pomocą VNC. Istnieje też możliwość przekierowania komunikacji z usługi jupyter uruchomionej na serwerze polon7 poprzez tunel połączenia ssh tak aby notatnik obsługiwany był na lokalnej maszynie.

Workflow 1: polon7 + VNC

Uruchomienie serwera VNC na polon7

  1. logujemy się do terminala serwera polon7 za pomocą ssh
  2. uruchamiamy serwer vncserver (przy pierwszym uruchomieniu ustalamy hasło do pulpitu)
    $ vncserver
  3. zapamiętujemy podany adres i numer pulpitu. Adres powinien być postaci polon7.fizyka.umk.pl:3

Uruchomienie notatników na pulpicie VNC

  1. za pomocą klienta VNC (np. vncviewer) logujemy się do sesji w trybie graficznym używając adresu uzyskanego przy uruchamianiu serwera VNC (np. polon7.fizyka.umk.pl:3) oraz ustawionego wówczas hasła
  2. pobieramy repozytorium git
    $ git clone https://github.com/IS-UMK/WDM_2022/
  3. przechodzimy do katalogu z notatnikami i uruchamiamy usługę jupiter
    $ jupyter-notebook

Workflow 2: polon7 + przekierowanie usługi przez ssh

Procedura przekierowania usługi jupyter z użyciem Putty: Remote jupyter notebooks with ssh port forwarding

  1. logujemy się za pomocą ssh do serwera polon7 z przekierowaniem portu
    $ ssh -L 8888:localhost:8888 user@polon7.fizyka.umk.pl
  2. klonujemy repozytorium
    $ git clone https://github.com/IS-UMK/WDM_2022/
  3. z katalogu repozytorium uruchamiamy usługę hostującą notatniki bez otwierania przeglądarki
    $ jupyter-notebook --no-browser --port 8888

    Domyślnie notatnik uruchamia się na porcie 8888. W przypadku, gdy port ten jest zajęty należy wybrać inny, pamiętając o odpowiedniej modyfikacji opcji -L wcześniejszego polecenia ssh (-L port:localhost:8888')

  4. na lokalnym komputerze w przeglądarce przechodzimy pod adres http://localhost:8888

Lab. WDM 2025

Lab 1. Wprowadzenie do Python i Jupyter

Moodle: Zadanie 1
GitHub: wdm_lab_01

Lab 2. Numpy i matplotlib

Moodle: Zadanie 2
GitHub: wdm_lab_02

Lab. 3 Pandas i Seaborn

Moodle: Zadanie 3
GitHub: wdm_lab_03

Lab. 4 Preprocessing

Moodle: Zadanie 4
GitHub: wdm_lab_04

Lab. 5 Regresja

Moodle: Zadanie 5
GitHub: wdm_lab_05

Lab. 6 Klasyfikacja

Moodle: Zadanie 6
GitHub: wdm_lab_06