- Это была битва с синтаксисом.
- Это была война с "IndexError".
- Это была охота на λ и его брата v.
- Это был процесс восстановления данных, которых уже никто не помнит, но зато теперь мы знаем, что
MSE ≈ 0— это кайф.
Реализация полного алгоритма PCA (Principal Component Analysis) с нуля, без библиотек
Проект включает:
- Метод Гаусса для решения СЛАУ
- Центрирование данных
- Расчёт ковариационной матрицы
- Поиск собственных значений и векторов
- Объяснённую дисперсию
- Проекцию данных на главные компоненты
- Восстановление исходных данных
- Подсчёт ошибки восстановления (MSE)
- Автоматические тесты для каждого этапа
- Установи Python 3.11+
- (Опционально) Установи matplotlib для графика:
pip install matplotlib
- Запусти
python main.py
- Вводи матрицу коэффициентов и правую часть СЛАУ — всё остальное произойдёт автоматически!
=== РЕЗУЛЬТАТЫ АВТОТЕСТОВ ===
Метод Гаусса ........ ✅ Passed
Центрирование ........ ✅ Passed
Ковариация .......... ✅ Passed
Собственные значения ✅ Passed
Векторы ............. ✅ Passed
PCA ................. ✅ Passed
Восстановление ...... ✅ Passed\
Метод главных компонент (Principal Component Analysis) — это способ:
- уменьшить размерность данных,
- сохранить максимум информации (дисперсии),
- избавиться от мультиколлинеарности.
- Центрирует данные (чтобы было среднее = 0)
- Строит ковариационную матрицу
- Находит собственные значения и векторы
- Выбирает первые k компонент по убыванию λ
- Проецирует данные в новое пространство
Показывает, сколько информации осталось при сжатии: $$ \gamma = \frac{\sum_{i=1}^{k} \lambda_i}{\sum_{i=1}^{m} \lambda_i} $$
Пытаемся восстановить исходные данные: $$ X_{\text{recon}} = X_{\text{proj}} \cdot W^T + \text{среднее} $$
Если MSE ≈ 0 — значит, восстановление идеально.
Если вы читаете этот README и он кажется вам слишком серьёзным — просто запустите main.py и введите что-то не то. Вам станет весело.
> Студентка: Клемяционок Полина
> Группа: j3113
> ИСУ: 466182