Wstęp do Data Mining
Strona kursu w Moodle: https://moodle.umk.pl/course/view.php?id=8128
Zaliczenie zajęć
Warunki zaliczenia zajęć:
- zadania z laboratorium: warunkiem zaliczenia zajęć jest rozwiązanie co najmniej 6 zadań z laboratorium.
Rozwiązania zadań, w postaci notatników Jupyter (pliki *.ipynb), należy terminowo deponować na stronie kursu w Moodle lub w prywatnych repozytoriach GitHub utworzonych poprzez adresy podane na stronie kursu Moodle. Zadania przewidziane są do realizacji w czasie trwania laboratorium. Możliwe jest dokończenie zadań po zajęciach i przesłanie rozwiązania w terminie do końca tygodnia, w którym odbyły się zajęcia. Zadania przesłane po tym terminie nie będą oceniane. - projekt zaliczeniowy:
uzyskanie oceny dobrej z plusem lub bardzo dobrej, oprócz wykonania zadań z laboratorium, wymaga zrealizowania projektu w postaci aplikacji lub notatnika Jupyter demonstrującego zastosowanie wybranych metod Data Mining w praktycznych zagadnieniach. Termin wykonania projektu do 30 maja 2025 r.
Propozycje tematów projektów
Uwaga: rozwiązanie zadań muszą być wykonane samodzielnie. Nie jest dozwolone udostępnianie rozwiązań innym osobom do skopiowania oraz wykorzystywanie narzędzi AI do generowania rozwiązań
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
- Sebastian Raschka, Machine Learning with PyTorch and Scikit-Learn, machine-learning-book
Plan
- 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
Laboratoria: notatniki i zadania
Środowisko pracy
Laboratoria realizowane są w języku Python z wykorzystaniem notatników Jupyter. Na pracowni komputerowej dostępna jest dystrybucja Anaconda (zalecane środowisko na zajęciach) zawierająca wszystkie niezbędne biblioteki i narzędzia. Możliwe jest również wykorzystanie usług umożliwiających edycję i uruchamianie notatników w chmurze, jak Google Colab lub Binder.
Praca lokalna w środowisku Anaconda (na pracowni lub własnym komputerze)
- Utwórz prywatne repozytorium GitHub za pomocą adresu aktywującego podanego w Moodle
https://moodle.umk.pl/mod/assign/index.php?id=8128 - Sklonuj repozytorium GitHub na swój komputer
- Otwórz wiersz poleceń Anaconda i przejdź do lokalizacji repozytorium
- Uruchom serwer Jupyter poleceniem
jupyter-notebook
lub
jupyter-lab
- Po wykonaniu zadań zapisz notatnik (
Plik
→Zapisz
) - Wyślij rozwiązanie (plik notatnika
.ipynb
) do repozytorium w GitHub lub umieścić notatnik w Moodle
Google Colab (lub Binder)
Google colaboratory umożliwia zapis notatników do prywatnych repozytoriów GitHub, usługa Binder umożliwia wyłącznie import publicznych repozytoriów GitHub.
- Utwórz prywatną kopię repozytorium z notatnikiem poprzez link podany w Moodle
https://moodle.umk.pl/mod/assign/index.php?id=8128 - Po wykonaniu zadania zapisz notatnik w repozytorium GitHub
Plik
→Zapisz notatnik w usłudze GitHub
lub pobierz notatnik z Google ColabPlik
→Pobierz
→Pobierz plik IPYNB
i umieść ten plik w Moodle.
- Google Colab (zalecane)
- dostęp do GPU
- wymagane konto Google i autoryzacja
- edytowane notatniki można zapisać na Dysku Google lub w GitHub (także w prywatnych repozytoriach)
- 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
- często długotrwała procedura konfiguracji i niestabilna praca (brak zapisu może powodować utratę danych)
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