(Erasmus @ Johannes Kepler University Linz, Austria — Spring 2024)
This repository contains my homework assignments for the Unsupervised Machine Learning course I completed during my Erasmus exchange at JKU Linz.
The course provided both theoretical depth and hands-on experience in unsupervised learning techniques, covering probabilistic models, clustering, dimensionality reduction, latent variable models, and graphical models.
The repository showcases my implementations, experiments, and analyses using these methods on synthetic and real-world datasets.
The Unsupervised Machine Learning course complements the lecture Machine Learning: Unsupervised Techniques and focuses on practicing the concepts and methods through programming assignments and small projects.
✅ Understand the mathematical foundations and assumptions of unsupervised learning models.
✅ Implement algorithms for clustering, dimensionality reduction, and latent variable modeling.
✅ Apply these methods to real-world data and interpret the results.
✅ Gain practical experience with Python libraries for machine learning and data analysis.
The course covers a broad set of unsupervised learning methods:
- Error models — Understanding error assumptions in generative models.
- Maximum likelihood & Expectation-Maximization (EM) algorithm — Parameter estimation for latent variable models.
- Maximum entropy methods — Modeling distributions under constraints.
- Clustering algorithms
- Basic clustering (e.g., k-means)
- Hierarchical clustering
- Affinity propagation
- Mixture models — Gaussian Mixture Models (GMMs) and beyond.
- Projection methods
- Principal Component Analysis (PCA)
- Independent Component Analysis (ICA)
- Other dimensionality reduction methods
- Factor analysis
- Matrix factorization
- Auto-associator networks and attractor networks
- Boltzmann and Helmholtz machines
- Hidden Markov Models (HMMs)
- Belief networks
- Factor graphs
This repository contains:
- Homework assignments: Each demonstrating both theoretical derivations and practical implementations of methods taught in the course.
- Code: Clean, well-documented Python code (or notebooks) for experiments, visualizations, and evaluations.