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)

Google Colab

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.)

MyBinder

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.

Installing the classic Jupyter Notebook interface

JupyterLab

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 serwera polon7 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 polecenia ssh (-L port:localhost:8888')

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

Laboratoria (notatniki)

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

Lab. 7 Ocena klasyfikacji
Moodle: Zadanie 7
GitHub: wdm_lab_07

Lab. 8 Analiza skupień
Moodle: Zadanie 8
GitHub: wdm_lab_08

Lab. 9 Analiza tesktu
Moodle: Zadanie 9
GitHub: wdm_lab_09

Lab. 10 Redukcja wymiarowości
Moodle: Zadanie 10
GitHub: wdm_lab_10

Kilka przydatnych odnośników

Python is a programming language that lets you work quickly and integrate systems more effectively

www.learnpython.org

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.

Jupyter Notebook for Beginners: A Tutorial

NumPy NumPy is the fundamental package for scientific computing with Python

NumPy tutorial

Pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool

10 minutes to pandas

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