Advanced Python Programming 2400-MIKRO-AIBF-APP
Opis treści kursu
Zajęcia (ćwiczenia) poświęcone są pogłębieniu kompetencji programistycznych studentów wykraczających poza poziom podstawowy, ze szczególnym uwzględnieniem praktycznych zastosowań w analizie danych, modelowaniu statystycznym i uczeniu maszynowym. Zajęcia odbywają się w laboratorium komputerowym i mają charakter warsztatowy, a ich celem jest rozwinięcie umiejętności projektowania, pisania i krytycznej oceny bardziej zaawansowanego kodu w Pythonie oraz stosowania odpowiednich metod statystycznych i uczenia maszynowego do rzeczywistych zbiorów danych.
Kurs podzielony jest na trzy bloki tematyczne, realizowane w formie intensywnych warsztatów jednodniowych (09:00–14:00).
Blok 1 — Zaawansowany Python i programowanie obiektowe (09:00–10:30) Zajęcia obejmują zaawansowane funkcje w Pythonie, w tym *args/**kwargs, domknięcia, wyrażenia lambda oraz listy/słowniki składane. Wprowadzają podstawy programowania obiektowego: klasy, dziedziczenie, metody dunder, właściwości oraz enkapsulację. Poruszają również dobre praktyki w zakresie programowania skryptowego i struktury projektu, w tym moduły, pakowanie, argparse, logowanie oraz środowiska wirtualne.
Blok 2 — Metody statystyczne i uczenie nienadzorowane (10:45–12:15) Zajęcia rozpoczynają się powtórką NumPy i pandas, obejmującą operacje wektorowe w porównaniu z pętlami, łańcuchy metod oraz obsługę braków danych (usuwanie/uzupełnianie/interpolacja). Następnie wprowadzają metody statystyczne w Pythonie, w tym testowanie hipotez z użyciem scipy.stats (testy t, Shapiro-Wilka, chi-kwadrat, korelacja Pearsona, test Manna-Whitneya) oraz regresję OLS z wykorzystaniem statsmodels. Studenci poznają metodę K-Means, obejmującą intuicję stojącą za uczeniem nienadzorowanym, iteracyjny algorytm przypisania/aktualizacji, implementację za pomocą sklearn KMeans oraz dobór modelu metodą łokcia i wskaźnikiem silhouette. Blok kończy się analizą głównych składowych (PCA), obejmującą problem skorelowanych cech, koncepcję głównych składowych i ortogonalności, wyjaśnioną wariancję oraz praktyczną demonstrację z użyciem sklearn PCA.
Blok 3 — Uczenie nadzorowane: metody zespołowe i sieci neuronowe (12:30–14:00) Zajęcia obejmują pełny proces oceny modeli uczenia maszynowego, w tym podział na zbiór treningowy i testowy, walidację krzyżową oraz metryki oceny (dokładność, precyzja, czułość, F1-score). Wprowadzają drzewa decyzyjne (węzły korzenia/liścia, nieczystość Giniego w porównaniu z entropią, głębokość drzewa i kryteria stopu, przeuczenie w porównaniu z niedouczeniem) oraz metody zespołowe, w tym Random Forest (bagging, istotność cech, strojenie hiperparametrów z użyciem GridSearchCV) oraz XGBoost/gradient boosting (intuicja boostingu, xgb.XGBClassifier, wczesne zatrzymanie). Blok kończy się wprowadzeniem do sieci neuronowych, obejmującym perceptron i wielowarstwowy perceptron (MLP), koncepcję propagacji wstecznej oraz praktyczną implementację z użyciem MLPClassifier lub Keras Sequential.
We wszystkich trzech blokach nacisk kładziony jest na pisanie czystego, powtarzalnego i dobrze udokumentowanego kodu, mającego zastosowanie do danych ekonomicznych i społecznych.
Projekt Application of Artificial Intelligence in Business and Finance (nr BPI/SPI/2024/1/00078) realizowany przez Uniwersytet Warszawski w ramach programu Spinaker organizowanego przez Narodową Agencję Wymiany Akademickiej (w ramach projektu Wsparcie tworzenia i realizacji międzynarodowych programów kształcenia, finansowanego ze środków Funduszy Europejskich dla Rozwoju Społecznego 2021-2027).
Koordynatorzy przedmiotu
Certyfikat mikropoświadczenia
Efekty uczenia się
Po ukończeniu kursu uczestnik
**w zakresie wiedzy:**
zna i rozumie zaawansowane konstrukcje programistyczne w Pythonie, w tym *args/**kwargs, domknięcia, funkcje lambda oraz listy/słowniki składane;
zna i rozumie zasady programowania obiektowego, w tym klasy, dziedziczenie, metody dunder, właściwości oraz enkapsulację; zna i rozumie dobre praktyki w zakresie programowania skryptowego i organizacji projektu, w tym modularyzację, pakowanie, logowanie oraz środowiska wirtualne;
zna i rozumie teoretyczne podstawy statystycznego testowania hipotez oraz regresji OLS; zna i rozumie zasady metod uczenia nienadzorowanego, w tym metodę K-Means oraz analizę głównych składowych (PCA);
zna i rozumie proces oceny modeli uczenia maszynowego oraz teoretyczne podstawy drzew decyzyjnych, metod zespołowych (Random Forest, gradient boosting) oraz sieci neuronowych.
**w zakresie umiejętności:**
potrafi pisać zaawansowany, dobrze zorganizowany kod w Pythonie, wykorzystując odpowiednie techniki programowania funkcyjnego i obiektowego;
potrafi zorganizować projekt w Pythonie zgodnie z dobrymi praktykami programowania skryptowego, w tym z użyciem modułów, parsowania argumentów, logowania oraz środowisk wirtualnych;
potrafi przeprowadzać wektorową manipulację danymi oraz budować potoki przetwarzania danych z użyciem NumPy i pandas; potrafi przeprowadzać statystyczne testy hipotez oraz estymować modele regresji z użyciem scipy.stats i statsmodels;
potrafi stosować i oceniać metody uczenia nienadzorowanego (K-Means, PCA) na rzeczywistych zbiorach danych; potrafi budować, stroić i oceniać modele uczenia nadzorowanego, w tym drzewa decyzyjne, Random Forest, XGBoost oraz sieci neuronowe, wykorzystując odpowiednie metryki wydajności i procedury walidacji.
**w zakresie kompetencji społecznych:**
jest gotów do krytycznej oceny wyników i ograniczeń analiz statystycznych oraz opartych na uczeniu maszynowym;
jest gotów do stosowania zasad czystego, powtarzalnego i dobrze udokumentowanego kodowania w pracy zespołowej i indywidualnej;
jest gotów do odpowiedzialnego doboru i stosowania właściwych metod analitycznych podczas pracy z danymi ekonomicznymi i społecznymi.
Kryteria oceniania
Zaliczenie pisemne (post-test)
Literatura
1. Mark Lutz, Python : wprowadzenie, Wydawnictwo Helion, 2022 lub inne wydanie dotyczące Pythona w wersji 3.X.
2. Krzysztof Ropiak, Wprowadzenie do języka Python - https://wmii.uwm.edu.pl/~kropiak/wd/Wprowadzenie%20do%20j%C4%99zyka%20Python.pdf