PCA на Python: сжатие и восстановление данных
После сжатия данных важно понимать, что сохранили главные компоненты. Обучите PCA на train, восстановите новые точки и верните долю объяснённой дисперсии. Все входные массивы описаны в условии.
Программа курса «Классическое машинное обучение: алгоритмы и практика на Python».
Сжатие и инспекция ортогональной проекции PCA
Что уже дано
Проверяющая система выполняет код в среде Python 3.12 с библиотеками numpy и scikit-learn. Никаких предопределённых глобальных переменных, файлов или экземпляров моделей заранее не создаётся. Проверяющий код напрямую вызывает требуемую функцию с подготовленными массивами данных.
Что нужно сделать
Реализуйте функцию reduce_and_reconstruct_pca(X_train, X_query, n_components).
Функция принимает:
X_train: обучающая числовая матрица (двумерный массивnp.ndarrayили вложенный список) формы(N_train, p), где , ;X_query: числовая матрица запроса (двумерный массивnp.ndarrayили вложенный список) формы(N_query, p)с тем же числом признаков ;n_components: целое число .
Требования к поведению и контракту:
- Обучающая выборка должна обладать положительной суммарной выборочной дисперсией. Если сумма выборочных дисперсий признаков с поправкой Бесселя (
ddof=1) по всем столбцамX_trainстрого равна , функция обязана возбудить исключениеValueErrorс непустым текстовым сообщением. - Модель должна настраиваться исключительно по обучающим данным
X_trainбез использования целевых переменных и без подмешивания данных запросаX_query. - Для точек запроса
X_queryнеобходимо получить координаты в подпространстве главных компонент и восстановить их обратно в исходное признаковое пространство размерности . - Функция возвращает словарь с тремя обязательными ключами:
"mean": одномерныйnp.ndarrayформы(p,)типаfloat64— вектор выборочных средних обучающей выборки;"explained_variance_ratio": одномерныйnp.ndarrayформы(n_components,)типаfloat64— массив долей дисперсии, объяснённых каждой из компонент;"reconstruction": двумерныйnp.ndarrayформы(N_query, p)типаfloat64— матрица ортогональной реконструкции точек запроса.
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно. Проверяющая система вызывает функцию reduce_and_reconstruct_pca и проверяет возвращённый словарь, типы данных, формы массивов, обработку граничных параметров и инвариантность ортогональной реконструкции.
Пример использования
import numpy as np
X_train = np.array([
[1.0, 1.0],
[2.0, 3.0],
[3.0, 2.0],
[4.0, 4.0]
], dtype=np.float64)
X_query = np.array([
[2.5, 2.5]
], dtype=np.float64)
result = reduce_and_reconstruct_pca(X_train, X_query, n_components=1)
print("mean:", np.round(result["mean"], 2).tolist())
print("explained_variance_ratio:", np.round(result["explained_variance_ratio"], 1).tolist())
print("reconstruction:", np.round(result["reconstruction"], 2).tolist())
Результат:
mean: [2.5, 2.5]
explained_variance_ratio: [0.9]
reconstruction: [[2.5, 2.5]]
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
