====== Wprowadzanie do Data Mining ====== Laboratorium w semestrze letnim 2022/23 odbywa się w poniedziałki w godz. 12-14 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 [[https://moodle.umk.pl/WFAIIS/course/view.php?id=40|kursu w Moodle]] lub w prywatnych repozytoriach GitHub utworzonych poprzez adresy podane na stronie kursu Moodle. \\ Warunkiem zaliczenia laboratorium jest zaliczenie co najmniej 6 z 10 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)//, {{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 ===== - 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 (?) ===== Laboratoria: notatniki i zadania ===== {{page>zajecia:wdm:sidebar&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ż wykorzystanie usług sieciowych umożliwiających edycję i uruchamianie notatników, jak Google Colab lub Binder. Python oraz jupyter-notebook dostępne są również na serwerze studenckim ''polon7.fizyka.umk.pl'' ==== Praca lokalnie (na pracowni lub własnym komputerze) ==== - Jeśli chcesz korzystać z repozytoriów GitHub do przesyłania rozwiązań to utwórz prywatną kopie repozytorium klikając na adres podany w Moodle - Pobierz notatnik ''ipynb'', np. klonując repozytorium GitHub - Otwórz wiersz poleceń Anaconda i przejdź do katalogu zawierającego pobrane pliki - Uruchom serwer Jupyter poleceniem \\ jupyter-notebook lub jupyter-lab - Po wykonaniu zadań zapisz notatnik - Umieść rozwiązanie w Moodle lub w repozytorium 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 kopie repozytorium z notatnikiem poprzez link podany w Moodle \\ https://moodle.umk.pl/WFAIIS/course/view.php?id=41#section-1 - Uruchom notatnik w Google Colab klikając {{zajecia:mn_2020_2:colab-badge.png}} - Po wykonaniu zadania zapisz notatnik w repozytorium GitHub \\ ''Plik'' -> ''Zapisz notatnik w usłudze 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. 12h.) * [[https://mybinder.org/|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 * często długotrwała procedura konfiguracji i niestabilna praca (brak zapisu może powodować utratę danych) 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) ==== * [[https://colab.research.google.com/|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.) * [[https://mybinder.org/|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 [[https://www.anaconda.com/products/individual|Anaconda]], która zawiera Pythona, Jupyter oraz wiele przydatnych pakietów. * [[https://www.anaconda.com/products/individual|Anaconda]] * [[https://jupyter.readthedocs.io/en/latest/install/notebook-classic.html|Installing the classic Jupyter Notebook interface]] * [[https://jupyterlab.readthedocs.io/en/stable/|JupyterLab]] ===== Kilka przydatnych odnośników ===== * [[https://www.python.org/|Python]] is a programming language that lets you work quickly and integrate systems more effectively * [[https://www.learnpython.org/pl/|www.learnpython.org]] * [[https://jupyter.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. * [[https://www.dataquest.io/blog/jupyter-notebook-tutorial/|Jupyter Notebook for Beginners: A Tutorial]] * [[https://numpy.org/|NumPy]] NumPy is the fundamental package for scientific computing with Python * [[https://numpy.org/devdocs/user/quickstart.html|NumPy tutorial]] * [[https://pandas.pydata.org/|Pandas]] is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool * [[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]] Simple and efficient tools for predictive data analysis * [[https://matplotlib.org/|matplotlib]] comprehensive library for creating static, animated, and interactive visualizations in Python. * [[https://github.com/rougier/matplotlib-tutorial|Matplotlib tutorial for beginner]] by Nicolas P. Rougier * [[https://seaborn.pydata.org/|seaborn]]: statistical data visualization * [[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