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ęć
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
Literatura
- 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
Plan
- Przegląd metod Data Mining
- Nie za długi wstęp do python, jupyter, numpy, pandas, matlibplot, scikit-learn, seaborn
- Analiza statystyczna danych, wizualizacja danych
- preprocessing: wykrywanie anomalii, braki w danych, dane odstające
- Regresja
- Liniowa oraz wielomianowa
- problem przeuczenia: underfitting/overfitting
- Klasyfikacja i ocena klasyfikatorów
- regresja logistyczna
- kNN
- drzewa decyzyjne
- SVM
- walidacja krzyżowa (cross validation)
- Analiza skupień
- k-means
- metody hierarchiczne, dendrogramy
- DBSCAN
- Text mining
- worek słów (BOW)
- Przetwarzanie obrazów
- PCA do kodowania obrazów
- Analiza szeregów czasowych (?)
Środowisko pracy
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
- logujemy się do terminala serwera
polon7
za pomocąssh
- uruchamiamy serwer
vncserver
(przy pierwszym uruchomieniu ustalamy hasło do pulpitu)
$ vncserver
- zapamiętujemy podany adres i numer pulpitu. Adres powinien być postaci
polon7.fizyka.umk.pl:3
Uruchomienie notatników na pulpicie VNC
- 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 - pobieramy repozytorium git
$ git clone https://github.com/IS-UMK/WDM_2022/
- 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
- logujemy się za pomocą
ssh
do serwerapolon7
z przekierowaniem portu
$ ssh -L 8888:localhost:8888 user@polon7.fizyka.umk.pl
- klonujemy repozytorium
$ git clone https://github.com/IS-UMK/WDM_2022/
- 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 poleceniassh
(-L port:localhost:8888
') - na lokalnym komputerze w przeglądarce przechodzimy pod adres http://localhost:8888
Laboratoria (notatniki)
Kilka przydatnych odnośników
- Python is a programming language that lets you work quickly and integrate systems more effectively
- jupyter The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.
- NumPy NumPy is the fundamental package for scientific computing with Python
- Pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool
- Using Pandas and Python to Explore Your Dataset by Reka Horvath
- scikit-learn Simple and efficient tools for predictive data analysis
- matplotlib comprehensive library for creating static, animated, and interactive visualizations in Python.
- Matplotlib tutorial for beginner by Nicolas P. Rougier
- seaborn: statistical data visualization
- Python Seaborn Tutorial For Beginners by Karlijn Willems
- Visualization with Seaborn from Python Data Science Handbook by Jake VanderPlas