Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать класс на языке Python, который соответствует следующему интерфейсу.
class GradientOptimizer:
def __init__(self, oracle, x0):
self.oracle = oracle
self.x0 = x0
def optimize(self, iterations, eps, alpha):
pass
В конструктор принимаются два аргумента — оракул, с помощью которого можно получить градиент оптимизируемой функции, а также точку, с которой необходимо начать градиентный спуск.
Метод optimize
принимает максимальное число итераций для критерия остановки,
L2-норму градиента, которую можно считать оптимальной,
а также learning rate. Метод возвращает оптимальную точку.
Оракул имеет следующий интерфейс:
class Oracle:
def get_func(self, x): pass
def get_grad(self, x): pass
x
имеет тип np.array
вещественных чисел.
Код должен содержать только класс и его реализацию. Он не должен ничего выводить на экран.
Входной файл: | Стандартный вход | Ограничение времени: | 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(θ) = 1MM∑i = 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])
Код должен содержать только реализацию функций.
Входной файл: | Стандартный вход | Ограничение времени: | 10 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать функцию на языке Python, которая находит линейную регрессию заданных векторов, используя метрику MSE.
def fit_linear_regression(X, y) # np.array of linear regression coefs
X
— двумерный np.array
. Каждая строка соответствует отдельному примеру.
y
— реальные значения предсказываемой величины
Код должен содержать только реализацию функций.