Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 100 |
Требуется реализовать классификатор, использующий алгоритм One Rule.
Первая строка входных данных содержит два целых числа N и K — количество примеров в обучающей выборке и количество признаков соответственно.
Вторая строка содержит K слов, разделённых пробелом — названия признаков объектов.
Следующие N строк содержат обучающую выборку, каждая строка содержит по K + 1 слов, первые K слов описывают значения признаков, слово номер K + 1 содержит метку класса — 0 или 1.
Следующая строка содержит одно целое число M — количество примеров в тестовой выборке.
Далее идёт тестовая выборка, содержащая M строк по K слов. Гарантируется, что каждое значение каждого признака встречается в обучающей выборке хотя бы один раз.
Выходные данные должны содержать M чисел — результаты классификации алгоритма One Rule после обучения на первых N примерах.
В случае если несколько признаков дают одинаковый результат на обучающей выборке, то следует выбрать тот, который встречается раньше.
Если по какому-то значению можно с одинаковой вероятностью предсказать как 0 так и 1, то следует предсказывать 1.
1 ≤ N, M, K ≤ 100
Суммарная длина строк не превосходит 105
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Имеется фиксированная неизвестная функция f(x), она одинаковая для всех тестов. Даны значения функции f(x), f(x + 1), f(x + 2), …, f(x + N − 1). Требуется определить значение функции f в точке x + N.
Для понимания структуры функции следует воспользоваться двумя тестами: первый из них приведён в примере. Второй тест можно скачать ЗДЕСЬ.
Первая строка входного файла содержит одно целое число N.
Вторая строка входного файла содержит N вещественных чисел — значения функции f в точках x, x + 1, x + 2, …, x + N − 1.
Выходной файл должен содержать одно число — f(x + N) с точностью не менее двух знаков после запятой.
3 ≤ N ≤ 105
− 108 ≤ x ≤ 108
− 109 ≤ f(x) ≤ 109
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | А. Могилёвкин | Ограничение времени: | 1 сек | |
Входной файл: | data.csv | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 4 |
Требуется на языке Python реализовать функцию
get_businessmen(df: pd.DataFrame)
Функция принимает на вход объект DataFrame
библиотеки
Pandas и возвращает DataFrame
пользователей,
совершивших 20 и более международных звонков.
В объекте DataFrame
присутствуют следующие поля:
ID
— идентификатор пользователя, целое уникальное число
Total day minutes
— сумма минут дневных звонков, вещественное число
Total day calls
— количество дневных звонков, целое число
Total night minutes
— сумма минут ночных звонков, вещественное число
Total night calls
— количество ночных звонков, целое число
Total intl minutes
— сумма минут международных звонков, вещественное число
Total intl calls
— количество международных звонков, целое число
Customer service calls
— количество обращений в техническую поддержку, целое число
Функция имеет следующий интерфейс
import pandas as pd
def get_businessmen(df: pd.DataFrame) -> pd.DataFrame:
"""
Возвращает DataFrame, оставляя в нём только пользователей из df,
совершивших 20 и более международных звонков
Параметры:
df: исходный DataFrame
Возвращаемое значение:
отфильтрованный DataFrame
"""
pass
Код решения должен содержать импортируемые модули, определение и реализацию функции.
№ | Входной файл (data.csv ) |
Стандартный выход |
---|---|---|
1 |
|
|
Автор: | А. Могилёвкин | Ограничение времени: | 1 сек | |
Входной файл: | data.csv | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 4 |
Требуется на языке Python реализовать функцию get_busiest_states(data: pd.DataFrame)
Функция принимает на вход объект DataFrame и возвращает Series, отсортированный по убыванию, в котором штаты являются индексами, а значения — количеством международных звонков в данном штате.
Функция имеет следующий интерфейс
import pandas as pd
def get_busiest_states(data: pd.DataFrame) -> pd.Series:
"""
Вычисляет Series, в котором индексы - наименования штатов, а значение - количество совершённых международных звонов.
Параметры:
data: DataFrame с данными
Возвращаемое значение:
Series отсортированный по убыванию значений.
"""
pass
Код решения должен содержать импортируемые модули, определение и реализацию функции.
№ | Входной файл (data.csv ) |
Стандартный выход |
---|---|---|
1 |
|
|
Автор: | А. Могилёвкин | Ограничение времени: | 1 сек | |
Входной файл: | data.csv | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 4 |
Требуется на языке Python реализовать функцию join_dataframes(users_df: pd.DataFrame, states_df: pd.DataFrame)
Функция принимает на вход два объекта DataFrame и возвращает объединённый DataFrame пользователей и штатов.
Функция имеет следующий интерфейс
import pandas as pd
def join_dataframes(data: pd.DataFrame, states: pd.DataFrame) -> pd.DataFrame:
"""
Возвращает объединённый DataFrame
Параметры:
data: DataFrame с пользователями
states: DataFrame с штатами
Возвращаемое значение:
объединённый DataFrame, содержащий поля 'Total day calls', 'Total night calls', 'State' в данном порядке
"""
pass
Код решения должен содержать импортируемые модули, определение и реализацию функции.
№ | Входной файл (data.csv ) |
Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 256 Мб | |
Максимальный балл: | 1 |
Требуется на языке Python реализовать функцию fillna_date
. Функция должна иметь следующий интерфейс:
import pandas as pd
def fillna_date(data: pd.DataFrame, function: str = 'mean') -> pd.DataFrame:
'''Fills NaN values in every column in `data` with values obtained by applying aggregate `function` over a month.
If every value within a month is NaN the fill value is obtained over a year.
If every value within a year is NaN the fill value is obtained over the whole column.
Arguments:
data: a pandas DataFrame, with datetime index
function: aggregate function to be used for obtaining fill value.
Possible values are: "mean", "median", "max", "min"
Returns:
a new pandas DataFrame with NaN values replaced
'''
pass
Датафрейм data
содержит несколько вещественнозначных колонок, индексируемых объектами типа datetime
. Функция fillna_date
заменяет значения NaN
в каждом столбце датафрейма data
на значение, полученное путём применения функции агрегации function
внутри соответствующего месяца. Если все значения в этом месяцы равны NaN
, новое значение получается из соответствующего года. Если же и все значения в году равны NaN
, значение получается из всего столбца. Гарантируется, что в каждом столбце хотя бы одно значение не равно NaN
.
Допустимыми значениями параметра function
являются строки: "mean", "median", "max", "min"
.
При решении задачи запрещено применять операторы циклов и условий языка Python для обработки датафрейма.
Входные данные из примера можно скачать здесь.
Код решения должен содержать только импортируемые модули, определение и реализацию класса.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | data = pd.read_csv('input.csv', index_col='date')
data = fillna_date(data)
data.to_csv('output.csv')
|
output.csv |
Входной файл: | Стандартный вход | Ограничение времени: | 2 сек | |
Выходной файл: | output.png | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 4 |
Требуется реализовать на языке Python функцию
import matplotlib.pyplot
def draw(plt: matplotlib.pyplot, x: list) -> None:
pass
Функция принимает на вход объект pyplot
и массив координат на оси абсцисс x
.
Функция должна нарисовать график x3 − 2x2 + 50sin(5x) + 3 в указанных точках.
График должен быть нарисован зелёным цветом 'green'
и содержать координатную сетку. Оси должны быть подписаны, выражение для оси ординат должно быть выражением на языке LaTeX, таким же, как в тексте задачи, в inline режиме отображения математических выражений $...$
.
Код решения должен содержать только реализацию функции. Код НЕ должен самостоятельно сохранять изображение в файл или выводить изображение на экран.
Входной файл: | Стандартный вход | Ограничение времени: | 3 сек | |
Выходной файл: | output.png | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 10 |
Требуется реализовать на языке Python функцию, отображающую оценку плотности распределения столбца данных. Функция должна иметь следующий интерфейс
import pandas as pd
from typing import Union
def draw_pdf(data: pd.DataFrame, column: str, bins: Union[int, str] = 10) -> None:
"""
Отображает оценку плотности распределения столбца данных
Параметры:
data: таблица данных.
column: название столбца для отображения.
bins: спецификация интервалов разбиения, аналогично matplotlib.pyplot.hist.
"""
pass
Стиль оформления графика (цвета, границы, толщину линий, подписи и т.п.) должен соответствовать представленному ниже. Границы значений оси абсцисс должны быть равны минимальному и максимальному значению отображаемого столбца.
Код решения должен содержать только реализацию функции и импортируемые модули. Код НЕ должен самостоятельно создавать фигуры или сохранять изображение в файл.
№ | Стандартный вход | Выходной файл (output.png ) |
---|---|---|
1 |
data.csv
data = pd.read_csv('data.csv')
plt.figure(figsize=(10, 5))
plt.rcParams.update({'font.size': 14})
draw_pdf(data, 'Account length', 'sturges')
plt.savefig('output.png')
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 3 сек | |
Выходной файл: | output.png | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 8 |
Требуется реализовать на языке Python функцию, отображающую долю целевых значений при каждом уникальном значении категориального признака. Функция должна иметь следующий интерфейс
import pandas as pd
def draw_bars(data: pd.DataFrame, column: str, target_column: str) -> None:
"""
Отображает долю целевых значений `target_column` при каждом уникальном значении категориального признака `column` в виде слолбчатой диаграммы.
Параметры:
data: таблица данных.
column: название категориального признака.
target_column: название целевой переменной.
"""
pass
Стиль оформления графика (цвета, границы, подписи, ширина колонок и т.п.) должен соответствовать представленному ниже. Цвета столбцов должны быть получены из палитры tab10
. Вклад долей менее 5% не должен быть подписан на графике.
Код решения должен содержать только реализацию функции и импортируемые модули. Код НЕ должен самостоятельно создавать фигуры или сохранять изображение в файл.
№ | Стандартный вход | Выходной файл (output.png ) |
---|---|---|
1 |
data.csv
data = pd.read_csv('data.csv')
plt.figure(figsize=(10, 5))
plt.rcParams.update({ 'font.size': 8 })
draw_bars(data, 'Customer service calls', 'Churn')
plt.savefig('output.png')
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Требуется реализовать класс на языке 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 Мб | |
Максимальный балл: | 1 |
Требуется реализовать на языке Python класс GDM
, который описывает алгоритм градиентного спуска с моментом и имеет следующий интерфейс:
import numpy as np
class GDM:
'''Represents a Gradient Descent with Momentum optimizer
Fields:
eta: learning rate
alpha: exponential decay factor
'''
eta: float
alpha: float
def __init__(self, *, alpha: float = 0.9, eta: float = 0.1):
'''Initalizes `eta` and `alpha` fields'''
raise NotImplementedError()
def optimize(self, oracle: Oracle, x0: np.ndarray, *,
max_iter: int = 100, eps: float = 1e-5) -> np.ndarray:
'''Optimizes a function specified as `oracle` starting from point `x0`.
The optimizations stops when `max_iter` iterations were completed or
the L2-norm of the gradient at current point is less than `eps`
Args:
oracle: function to optimize
x0: point to start from
max_iter: maximal number of iterations
eps: threshold for L2-norm of gradient
Returns:
A point at which the optimization stopped
'''
raise NotImplementedError()
Параметрами алгоритма являются:
alpha
— скорость затухания момента,eta
— learning rate.oracle
— оптимизируемая функция,x0
— начальная точка,max_iter
— максимальное количество итераций,eps
— пороговое значение L2 нормы градиента.max_iter
количества итераций или при достижении точки, в которой L2 норма градиента меньше eps
.
Класс Oracle
описывает оптимизируемую функцию:
import numpy as np
class Oracle:
'''Provides an interface for evaluating a function and its derivative at arbitrary point'''
def value(self, x: np.ndarray) -> float:
'''Evaluates the underlying function at point `x`
Args:
x: a point to evaluate funciton at
Returns:
Function value
'''
raise NotImplementedError()
def gradient(self, x: np.ndarray) -> np.ndarray:
'''Evaluates the underlying function derivative at point `x`
Args:
x: a point to evaluate derivative at
Returns:
Function derivative
'''
raise NotImplementedError()
Код решения должен содержать только определение и реализацию класса.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Требуется реализовать на языке Python класс NesterovAG
, который описывает алгоритм ускоренного градиента Нестерова и имеет следующий интерфейс
import numpy as np
class NesterovAG:
'''Represents a Nesterov Accelerated Gradient optimizer
Fields:
eta: learning rate
alpha: exponential decay factor
'''
eta: float
alpha: float
def __init__(self, *, alpha: float = 0.9, eta: float = 0.1):
'''Initalizes `eta` and `aplha` fields'''
raise NotImplementedError()
def optimize(self, oracle: Oracle, x0: np.ndarray, *,
max_iter: int = 100, eps: float = 1e-5) -> np.ndarray:
'''Optimizes a function specified as `oracle` starting from point `x0`.
The optimizations stops when `max_iter` iterations were completed or
the L2-norm of the current gradient is less than `eps`
Args:
oracle: function to optimize
x0: point to start from
max_iter: maximal number of iterations
eps: threshold for L2-norm of gradient
Returns:
A point at which the optimization stopped
'''
raise NotImplementedError()
Параметрами алгоритма являются:
alpha
— скорость затухания момента,eta
— learning rate.oracle
— оптимизируемая функция,x0
— начальная точка,max_iter
— максимальное количество итераций,eps
— пороговое значение L2 нормы градиента.max_iter
количества итераций или при достижении точки, в которой L2 норма градиента меньше eps
.
Класс Oracle
описывает оптимизируемую функцию
import numpy as np
class Oracle:
'''Provides an interface for evaluating a function and its derivative at arbitrary point'''
def value(self, x: np.ndarray) -> float:
'''Evaluates the underlying function at point `x`
Args:
x: a point to evaluate funciton at
Returns:
Function value
'''
raise NotImplementedError()
def gradient(self, x: np.ndarray) -> np.ndarray:
'''Evaluates the underlying function derivative at point `x`
Args:
x: a point to evaluate derivative at
Returns:
Function derivative
'''
raise NotImplementedError()
Код решения должен содержать только определение и реализацию класса.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Требуется реализовать на языке Python класс AdaGrad
, который описывает алгоритм адаптивного градиентного спуска и имеет следующий интерфейс
import numpy as np
class AdaGrad:
'''Represents an AdaGrad optimizer
Fields:
eta: learning rate
epsilon: smoothing term
'''
eta: float
epsilon: float
def __init__(self, *, eta: float = 0.1, epsilon: float = 1e-8):
'''Initalizes `eta` and `epsilon` fields'''
raise NotImplementedError()
def optimize(self, oracle: Oracle, x0: np.ndarray, *,
max_iter: int = 100, eps: float = 1e-5) -> np.ndarray:
'''Optimizes a function specified as `oracle` starting from point `x0`.
The optimizations stops when `max_iter` iterations were completed or
the L2-norm of the gradient at current point is less than `eps`
Args:
oracle: function to optimize
x0: point to start from
max_iter: maximal number of iterations
eps: threshold for L2-norm of gradient
Returns:
A point at which the optimization stopped
'''
raise NotImplementedError()
Параметрами алгоритма являются:
eta
— learning rate,epsilon
— сглаживающий коэффициент.oracle
— оптимизируемая функция,x0
— начальная точка,max_iter
— максимальное количество итераций,eps
— пороговое значение L2 нормы градиента.max_iter
количества итераций или при достижении точки, в которой L2 норма градиента меньше eps
.
Класс Oracle
описывает оптимизируемую функцию
import numpy as np
class Oracle:
'''Provides an interface for evaluating a function and its derivative at arbitrary point'''
def value(self, x: np.ndarray) -> float:
'''Evaluates the underlying function at point `x`
Args:
x: a point to evaluate funciton at
Returns:
Function value
'''
raise NotImplementedError()
def gradient(self, x: np.ndarray) -> np.ndarray:
'''Evaluates the underlying function derivative at point `x`
Args:
x: a point to evaluate derivative at
Returns:
Function derivative
'''
raise NotImplementedError()
Код решения должен содержать только определение и реализацию класса.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Требуется реализовать на языке Python класс RMSProp
, который описывает одноименный алгоритм и имеет следующий интерфейс
import numpy as np
class RMSProp:
'''Represents an RMSProp optimizer
Fields:
eta: learning rate
gamma: exponential decay factor
epsilon: smoothing term
'''
eta: float
gamma: float
epsilon: float
def __init__(self, *, eta: float = 0.1, gamma: float = 0.9, epsilon: float = 1e-8):
'''Initalizes `eta`, `gamma` and `epsilon` fields'''
raise NotImplementedError()
def optimize(self, oracle: Oracle, x0: np.ndarray, *,
max_iter: int = 100, eps: float = 1e-5) -> np.ndarray:
'''Optimizes a function specified as `oracle` starting from point `x0`.
The optimizations stops when `max_iter` iterations were completed or
the L2-norm of the gradient at current point is less than `eps`
Args:
oracle: function to optimize
x0: point to start from
max_iter: maximal number of iterations
eps: threshold for L2-norm of gradient
Returns:
A point at which the optimization stopped
'''
raise NotImplementedError()
Параметрами алгоритма являются:
eta
— learning rate,gamma
— коэффициент затухания,epsilon
— сглаживающий коэффициент.oracle
— оптимизируемая функция,x0
— начальная точка,max_iter
— максимальное количество итераций,eps
— пороговое значение L2 нормы градиента.max_iter
количества итераций или при достижении точки, в которой L2 норма градиента меньше eps
.
Класс Oracle
описывает оптимизируемую функцию
import numpy as np
class Oracle:
'''Provides an interface for evaluating a function and its derivative at arbitrary point'''
def value(self, x: np.ndarray) -> float:
'''Evaluates the underlying function at point `x`
Args:
x: a point to evaluate funciton at
Returns:
Function value
'''
raise NotImplementedError()
def gradient(self, x: np.ndarray) -> np.ndarray:
'''Evaluates the underlying function derivative at point `x`
Args:
x: a point to evaluate derivative at
Returns:
Function derivative
'''
raise NotImplementedError()
Код решения должен содержать только определение и реализацию класса.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Требуется реализовать на языке Python класс Adam
, который описывает одноименный алгоритм и имеет следующий интерфейс
import numpy as np
class Adam:
'''Represents an Adam optimizer
Fields:
eta: learning rate
beta1: first moment decay rate
beta2: second moment decay rate
epsilon: smoothing term
'''
eta: float
beta1: float
beta2: float
epsilon: float
def __init__(self, *, eta: float = 0.1, beta1: float = 0.9, beta2: float = 0.999, epsilon: float = 1e-8):
'''Initalizes `eta`, `beta1` and `beta2` fields'''
raise NotImplementedError()
def optimize(self, oracle: Oracle, x0: np.ndarray, *,
max_iter: int = 100, eps: float = 1e-5) -> np.ndarray:
'''Optimizes a function specified as `oracle` starting from point `x0`.
The optimizations stops when `max_iter` iterations were completed or
the L2-norm of the gradient at current point is less than `eps`
Args:
oracle: function to optimize
x0: point to start from
max_iter: maximal number of iterations
eps: threshold for L2-norm of gradient
Returns:
A point at which the optimization stopped
'''
raise NotImplementedError()
Параметрами алгоритма являются:
eta
— learning rate,beta1
— коэффициент затухания первого момента,beta2
— коэффициент затухания второго момента,epsilon
— сглаживающий коэффициент.oracle
— оптимизируемая функция,x0
— начальная точка,max_iter
— максимальное количество итераций,eps
— пороговое значение L2 нормы градиента.max_iter
количества итераций или при достижении точки, в которой L2 норма градиента меньше eps
.
Класс Oracle
описывает оптимизируемую функцию
import numpy as np
class Oracle:
'''Provides an interface for evaluating a function and its derivative at arbitrary point'''
def value(self, x: np.ndarray) -> float:
'''Evaluates the underlying function at point `x`
Args:
x: a point to evaluate funciton at
Returns:
Function value
'''
raise NotImplementedError()
def gradient(self, x: np.ndarray) -> np.ndarray:
'''Evaluates the underlying function derivative at point `x`
Args:
x: a point to evaluate derivative at
Returns:
Function derivative
'''
raise NotImplementedError()
Код решения должен содержать только определение и реализацию класса.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Требуется реализовать следующие функции на языке 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 Мб | |
Максимальный балл: | 1 |
Требуется реализовать функцию на языке Python, которая находит линейную регрессию заданных векторов, используя метрику MSE.
def fit_linear_regression(X, y) # np.array of linear regression coefs
X
— двумерный np.array
. Каждая строка соответствует отдельному примеру.
y
— реальные значения предсказываемой величины
Код должен содержать только реализацию функций.
Автор: | Учебное задание | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 1 |
Некоторая теоретическая модель предполагает зависимость переменной Y от переменной X по следующему закону: Y = a * X2 + b * X + c.
Требуется по N наблюдениям методом наименьших квадратов оценить параметры a, b и c данной модели.
Первая строка входного файла содержит одно целое число N.
Следующие N строк содержат по два числа — xi и yi
Выходной файл должен содержать три вещественных числа a, b и c с точностью до двух знаков после десятичной точки.
3 ≤ N ≤ 1000
1 ≤ |xi|, |yi| ≤ 5000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 2 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 1 |
Пусть имеется задача регрессии f(x) = a ⋅ x + b ≈ y. Требуется найти коэффициенты регрессии a, такие, что |{ai | ai ∈ a, ai = 0}| = k, 0 < k ⩽ |a| = m. При этом должно выполняться условие R2 = 1 − n∑i = 1(yi − f(Xi))2n∑i = 1(yi − y)2 ⩾ s. При решении задачи предполагается использование алгоритма Lasso.
Данные для обучения содержатся в файле. Качество модели будет рассчитано на скрытом наборе данных
Первая строка входных данных содержит натуральное число N — количество тестов. В следующих N блоках содержится описание тестов. Первая строка блока содержит целые числа n — количество примеров обучающей выборки, m — размерность пространства, k — необходимое количество нулевых коэффициентов, и вещественное число s — минимальное значение метрики R2. Следующие n строк содержат по m + 1 вещественному числу — координаты точки пространства и значение целевой переменной y.
Решение должно представлять собой текстовый файл содержащий N строк — коэффициенты a и b линейной регрессии разделённые символом пробел.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Максимальный балл: | 15 |
Билет состоит из 3 вопросов, каждый из которых выбирается независимо и случайно из следующих списков:
Вопрос 1
Вопрос 2
Вопрос 3
Экзамен проводится очно. В случае невозможности очного присутствия необходимо заранее договориться с преподавателем о дистанционной сдаче.
После взятия билета студент готовится в ответу. При подготовке можно использовать произвольные материалы и доступ в Интернет.
В результате подготовки к должен появиться написанный от руки документ объёмом не более 2 страниц A4. Во время ответа можно пользоваться только этим документом. В документе должны быть указаны синтаксические конструкции, формулы, теоремы и прочий материал, необходимый для ответа. Ответ состоит из устного доклада студента, длиной не более 2-3 минут на каждый вопрос. Полный текст доклада записывать НЕ нужно. В докладе необходимо максимально кратко упомянуть все важные элементы доставшейся темы/вопроса. После доклада преподаватель задаёт несколько уточняющих вопросов.
Оценка за каждый вопрос — от 0 до 5 баллов. Студент, полностью правильно ответивший в рамках учебного плана данного курса, получает 4 балла за вопрос. Оценка 5 баллов выставляется за выдающийся ответ, превосходящий требования учебного плана.