Задача G. Линейная регрессия. Основы

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Требуется реализовать следующие функции на языке Python.


def linear_func(theta, x)                  # function value
def linear_func_all(theta, X)              # 1-d np.array of function values of all rows of the matrix X
def mean_squared_error(theta, X, y)        # MSE value of current regression
def grad_mean_squared_error(theta, X, y)   # 1-d array of gradient by theta

theta — одномерный np.array

x — одномерный np.array

X — двумерный np.array. Каждая строка соответствует по размерности вектору theta

y — реальные значения предсказываемой величины

Матрица X имеет размер M × N. M строк и N столбцов.

Используется линейная функция вида: hθ(x) = θ1 x1 + θ2 x2 + ...  + θn xN

Mean squared error (MSE) как функция от θ: J(θ) = 1MMi = 1(yi − hθ(x(i)))2. Где x(i) — i-я строка матрицы X

Градиент функции MSE: ∇ J(θ) = { ∂ J∂ θ1, ∂ J∂ θ2, ..., ∂ J∂ θN}

Пример

X = np.array([[1,2],[3,4],[4,5]])

theta = np.array([5, 6])

y = np.array([1, 2, 1])

linear_func_all(theta, X) # --> array([17, 39, 50])

mean_squared_error(theta, X, y) # --> 1342.0

grad_mean_squared_error(theta, X, y) # --> array([215.33333333, 283.33333333])

Формат выходных данных

Код должен содержать только реализацию функций.


0.047s 0.010s 13