~~NOCACHE~~
====== Wstęp do Data Mining 2026 ======
Strona kursu w Moodle: https://moodle.umk.pl/course/view.php?id=9852
===== Zaliczenie zajęć =====
Warunki zaliczenia zajęć:
* rozwiązanie minimum 6 zadań z laboratorium
* projekt zaliczeniowy (nieobowiązkowy, ale podnoszący ocenę)
==== 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ć w prywatnych repozytoriach GitHub utworzonych poprzez adresy podane na stronie kursu Moodle. Zadania będą realizowane podczas 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. Zadanie uzyskuje zaliczenie, jeżeli rozwiązanie realizuje co najmniej 50% treści zadania.
Skala ocen:
* od 6 zaliczonych zadań: ocena dostateczna (3.0)
* od 8 zaliczonych zadań: ocena dostateczna z plusem (3.5)
* od 10 zaliczonych zadań: ocena dobra (4.0)
**Uwaga: zadania muszą być wykonane samodzielnie. Nie jest dozwolone udostępnianie rozwiązań innym osobom w celu ich skopiowania ani wykorzystywanie narzędzi AI do generowania rozwiązań.**
W przypadku wątpliwości dotyczących samodzielności rozwiązania, prowadzący zajęcia zastrzega sobie prawo do przeprowadzenia dodatkowej rozmowy w celu weryfikacji wiedzy i umiejętności studenta.
==== Projekt zaliczeniowy ====
Uzyskanie oceny "dobra z plusem" lub "bardzo dobra", oprócz wykonania zadań z laboratorium, wymaga zrealizowania projektu w postaci aplikacji demonstrującej zastosowanie wybranych metod Data Mining. Termin zgłaszania tematów projektów mija **31 maja 2026 r.** Do tego czasu należy umieścić krótki opis projektu w pliku ''README.md'' w repozytorium GitHub.
[[projekty|Propozycje tematów projektów]]
Zaliczenie projektu odbywa się na podstawie prezentacji projektu podczas indywidualnej rozmowy z prowadzącym zajęcia. Realizacja projektu podnosi ocenę o jeden stopień.
Skala ocen:
* od 6 zaliczonych zadań + projekt: ocena dobra (4.0)
* od 8 zaliczonych zadań + projekt: ocena dobra z plusem (4.5)
* od 10 zaliczonych zadań + projekt: ocena bardzo dobra (5.0)
===== Literatura =====
* Robert Layton, //Learning Data Mining with Python//, wyd. 2 (2017) — dostęp online w zasobach biblioteki UMK
* Pang-Ning Tan, Michael Steinbach, Anuj Karpatne, //Introduction to Data Mining (Second Edition)//, {{https://www-users.cs.umn.edu/~kumar001/dmbook/index.php|WWW}}
* Sebastian Raschka, //Machine Learning with PyTorch and Scikit-Learn//, {{https://github.com/rasbt/machine-learning-book/}}
===== Plan =====
- Krótki kurs wstępny do Pythona, Jupyter, NumPy, Pandas, matplotlib, scikit-learn i Seaborn
- Analiza statystyczna danych i wizualizacja danych
* preprocessing: wykrywanie anomalii, braki w danych, wartości 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 (bag-of-words, BOW)
- Przetwarzanie obrazów
* PCA do kodowania obrazów
===== Laboratoria: notatniki i zadania =====
{{page>zajecia:wdm_2026_1:sidebar#laboratorium&noheader&nofooter}}
===== Ś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ż korzystanie z usług umożliwiających edycję i uruchamianie notatników w chmurze, takich jak Google Colab czy 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/course/section.php?id=109215
- 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 \\ Notatniki można również uruchomić bezpośrednio z poziomu Anaconda Navigator lub w Visual Studio Code.
- Po wykonaniu zadań zapisz notatnik (''Plik'' -> ''Zapisz'')
- Wyślij rozwiązanie (plik notatnika ''.ipynb'') do repozytorium na GitHub
==== 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/course/section.php?id=109215
- Uruchom notatnik w Google Colab, klikając {{zajecia:mn_2020_2:colab-badge.png?nolink}}
- Po wykonaniu zadania zapisz notatnik w repozytorium GitHub \\ ''Plik'' -> ''Zapisz notatnik w usłudze GitHub'' \\ lub pobierz notatnik z Google Colab: ''Plik'' -> ''Pobierz'' -> ''Pobierz plik IPYNB'' z rozwiązaniem i wyślij go do repozytorium GitHub
* [[https://colab.research.google.com/|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. 12 h)
* [[https://mybinder.org/|MyBinder]]
* tylko CPU, min. 1 GB RAM
* nie wymaga autoryzacji
* brak możliwości zachowania zmian pomiędzy sesjami
* sesja do 6 h, przerywana przy braku 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 =====
* [[https://www.anaconda.com/download/|Anaconda]] — dystrybucja Pythona zawierająca wszystkie niezbędne biblioteki i narzędzia do pracy z danymi
* [[https://www.python.org/|Python]]
* [[https://www.learnpython.org/pl/|learnpython.org]]
* [[https://jupyter.org/|Jupyter]]
* [[https://www.dataquest.io/blog/jupyter-notebook-tutorial/|Jupyter Notebook for Beginners: A Tutorial]]
* [[https://numpy.org/|NumPy]]
* [[https://numpy.org/devdocs/user/quickstart.html|NumPy tutorial]]
* [[https://pandas.pydata.org/|Pandas]]
* [[https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html|10 minutes to pandas]]
* [[https://realpython.com/pandas-python-explore-dataset/#using-the-pandas-python-library|Using Pandas and Python to Explore Your Dataset]] by Reka Horvath
* [[https://scikit-learn.org/stable/|scikit-learn]]
* [[https://matplotlib.org/|matplotlib]]
* [[https://github.com/rougier/matplotlib-tutorial|Matplotlib tutorial for beginner]] by Nicolas P. Rougier
* [[https://seaborn.pydata.org/|seaborn]]
* [[https://www.datacamp.com/community/tutorials/seaborn-python-tutorial|Python Seaborn Tutorial For Beginners]] by Karlijn Willems
* [[https://jakevdp.github.io/PythonDataScienceHandbook/04.14-visualization-with-seaborn.html|Visualization with Seaborn]] from Python Data Science Handbook by Jake VanderPlas