Линейная регрессия на NumPy: прогноз и остатки

Рассчитайте прогноз линейной модели y_pred = X @ w + b и остатки y − y_pred. Задача проверяет не только числа, но и формы массивов: ошибка размерности не должна тихо превратиться в broadcasting.

Программа курса «Классическое машинное обучение: алгоритмы и практика на Python».

Матричный прогноз и вектор остатков

Что уже дано

Проверяющая система запускает решение в среде Python 3.12 с библиотекой numpy. Никаких вспомогательных глобальных переменных или скрытых файлов в окружении не создаётся. Проверяющие тесты напрямую вызывают функцию compute_predictions_and_residuals(X, w, b, y).

Что нужно сделать

Реализуйте функцию compute_predictions_and_residuals(X, w, b, y).

Функция принимает матрицу признаков X, вектор весов w, свободный член b и вектор истинных целевых меток y.

Требования к контракту:

  • Функция должна возвращать кортеж из двух одномерных массивов NumPy типа float64: (predictions, residuals).
  • Вектор predictions содержит точечные предсказания линейной модели для каждого объекта выборки.
  • Вектор residuals содержит остатки модели, вычисленные согласно определению из урока как отклонение истинных меток от предсказаний, с сохранением исходного порядка объектов выборки.
  • Возвращаемые массивы должны иметь тип np.float64 независимо от того, переданы ли на вход целочисленные структуры или массивы вещественных чисел другой точности.
  • Входные данные должны соответствовать линейной спецификации с одним целевым выходом: X является строго двумерным массивом формы (n, p) с и ; w — строго одномерным массивом длины p; y — строго одномерным массивом длины n.
  • Если размерности аргументов не согласованы (число признаков в X не равно длине w, число строк X не равно длине y, или ), либо если ранг любого из аргументов X, w, y отличается от требуемого (например, скаляр вместо вектора или многомерный тензор), функция обязана возбуждать исключение ValueError.

Ввод и вывод

stdin не используется. Печатать через print в stdout ничего не нужно.

Проверяющая система вызывает функцию compute_predictions_and_residuals(X, w, b, y).

Параметры функции:

  • X: np.ndarray формы (n, p) или вложенный числовой список;
  • w: np.ndarray формы (p,) или одномерный числовой список длины p;
  • b: скалярное число (int или float);
  • y: np.ndarray формы (n,) или одномерный числовой список длины n.

Возвращаемое значение: кортеж (predictions, residuals) из двух объектов np.ndarray формы (n,) и типа np.float64.

Пример использования

import numpy as np

X = [[1.0, 2.0], [3.0, 0.0]]
w = [2.0, -1.0]
b = 4.0
y = [5.0, 8.0]

preds, resids = compute_predictions_and_residuals(X, w, b, y)
print("preds:", preds.tolist())
print("resids:", resids.tolist())

Результат:

preds: [4.0, 10.0]
resids: [1.0, -2.0]
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи