SimpleImputer: медиана и индикаторы пропусков
Заполните пропуски в новых данных медианами обучающей выборки и добавьте индикаторы. Отдельно проверьте случай, когда пропуск впервые появляется только в query.
Программа курса «Классическое машинное обучение: алгоритмы и практика на Python».
Импутация пропусков с индикатором через SimpleImputer
Что уже дано
Проверяющая система запускает программу в среде Python 3.12 с библиотеками numpy и scikit-learn. Никаких предопределённых переменных или скрытых файлов перед запуском решения не создаётся.
Что нужно сделать
Напишите программу, которая считывает из стандартного потока ввода матрицу train и проверочную матрицу query, выполняет медианную импутацию с формированием бинарных индикаторов пропусков и выводит полученные статистики и преобразованные данные.
Требования к обработке:
- Обучение статистик и определение списка индикаторов должно производиться строго по выборке
train. В каждом столбцеtrainгарантированно есть хотя бы одно числовое наблюдение. - При обработке
queryиспользуются константы, обученные наtrain. Пространство признаков после трансформации фиксируется обучающей выборкой: если пропуск вqueryвстретился в столбце, где наtrainпропусков не было, значение заполняется медианой этого столбца, но новый столбец-индикатор не порождается. - В поток вывода необходимо напечатать обученные медианы признаков, индексы столбцов с индикаторами и преобразованную матрицу
query.
Ввод и вывод
Программа считывает данные из stdin и пишет результат в stdout.
Формат ввода
- В первой строке заданы три целых числа через пробел: , , — количество строк выборки
train, количество строк выборкиqueryи число числовых признаков (). - В следующих строках заданы строки обучающей матрицы. Элементы разделены пробелом. Числовое значение задаётся вещественным числом, пропуск обозначается строкой
nanилиNaN. - В следующих строках заданы строки проверочной матрицы
queryв том же формате.
Формат вывода
- Первая строка:
statistics:и через пробел медианы всех признаков обучающей выборки, округлённые до 4 знаков после запятой. - Вторая строка:
indicator_features:и через пробел целочисленные индексы колонок (от до ), в которых наtrainприсутствовали пропуски. Если пропусков наtrainне было, выведитеindicator_features: none. - Последующие строк: строки преобразованной матрицы
query, элементы разделены пробелом и округлены до 4 знаков после запятой.
Пример
- Ввод
4 3 3 1.0 2.0 5.0 nan 4.0 1.0 3.0 nan 9.0 5.0 6.0 7.0 2.0 3.0 nan nan nan 2.0 4.0 8.0 3.0
- Вывод
statistics: 3.0000 4.0000 6.0000 indicator_features: 0 1 2.0000 3.0000 6.0000 0.0000 0.0000 3.0000 4.0000 2.0000 1.0000 1.0000 4.0000 8.0000 3.0000 0.0000 0.0000
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
