Skip to content

kleeeeem/lab_lg

Repository files navigation

📊 Лабораторная работа: Метод главных компонент (PCA)

🤡 PS: Это не просто лабораторная

  • Это была битва с синтаксисом.
  • Это была война с "IndexError".
  • Это была охота на λ и его брата v.
  • Это был процесс восстановления данных, которых уже никто не помнит, но зато теперь мы знаем, что MSE ≈ 0 — это кайф.

🔍 Описание

Реализация полного алгоритма PCA (Principal Component Analysis) с нуля, без библиотек

Проект включает:

  • Метод Гаусса для решения СЛАУ
  • Центрирование данных
  • Расчёт ковариационной матрицы
  • Поиск собственных значений и векторов
  • Объяснённую дисперсию
  • Проекцию данных на главные компоненты
  • Восстановление исходных данных
  • Подсчёт ошибки восстановления (MSE)
  • Автоматические тесты для каждого этапа

📁 Структура проекта

▶️ Как запустить

  1. Установи Python 3.11+
  2. (Опционально) Установи matplotlib для графика:
    pip install matplotlib
  3. Запусти
      python main.py
  4. Вводи матрицу коэффициентов и правую часть СЛАУ — всё остальное произойдёт автоматически!

🧪 Автотесты

=== РЕЗУЛЬТАТЫ АВТОТЕСТОВ ===
Метод Гаусса ........ ✅ Passed
Центрирование ........ ✅ Passed
Ковариация .......... ✅ Passed
Собственные значения ✅ Passed
Векторы ............. ✅ Passed
PCA ................. ✅ Passed
Восстановление ...... ✅ Passed\

📚 Теория (если кто-то всё-таки захочет разобраться)

Что такое PCA?

Метод главных компонент (Principal Component Analysis) — это способ:

  • уменьшить размерность данных,
  • сохранить максимум информации (дисперсии),
  • избавиться от мультиколлинеарности.

Что делает PCA?

  1. Центрирует данные (чтобы было среднее = 0)
  2. Строит ковариационную матрицу
  3. Находит собственные значения и векторы
  4. Выбирает первые k компонент по убыванию λ
  5. Проецирует данные в новое пространство

Что такое объяснённая дисперсия?

Показывает, сколько информации осталось при сжатии: $$ \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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages