Задача A. Entropy

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

Условие

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

entropy(y) =  − v = set(y)p(v)log p(v)

где set(y) — множество уникальных значений вектора y.


import numpy as np

def entropy(y: np.ndarray) -> float:
    """Computes entropy value for labels `y`.
    
    Arguments:
        y: 1d array of integers, sample labels
        
    Returns:
        float, entropy value for labels `y`"""
    pass

Функция принимает единственный параметр y — одномерный np.array, значения классов в обучающей выборке.

При решении задачи следует использовать натуральный логарифм.

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

Код должен содержать только реализацию функции. Запрещено пользоваться любыми готовыми реализациями вычисления функции entropy.


Задача B. Gini

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

Условие

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

gini(y) = 1 − v = set(y)p2(v)

где set(y) — множество уникальных значений вектора y.


import numpy as np

def gini(y: np.ndarray) -> float:
    """Computes gini impurity value for labels `y`.
    
    Arguments:
        y: 1d array of integers, sample labels
        
    Returns:
        float, gini impurity value for labels `y`"""
    pass

y — одномерный np.array — значения классов в выборке

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

Код должен содержать только реализацию функции. Запрещено пользоваться любыми готовыми реализациями вычисления функции gini.

Примеры тестов

Стандартный вход Стандартный выход
1
3 2 4 4 2 0 1 3 0 1
0.8

Задача C. Decision tree split

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

Условие

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


def tree_split(X, y, criterion)   # col, row of best split

X — двумерный np.array — обучающая выборка

y — одномерный np.array — значения классов в обучающей выборке

criterion — строковое значение — вид критерия 'var', 'gini' или 'entropy'

tree_split должен возвращать номер признака и номер значения из обучающей выборки, которое будет использоваться в качестве порогового

Таким образом, tree_split возвращает наилучшее бинарное разделение по правилу вида xcol ≤ X[row, col]

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

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


Задача D. Метод ближайших соседей. Основы

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

Условие

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


def knn_predict_simple(X, y, x, k)     # array of pairs -- class and number of votes of neighbors

X — двумерный np.array — обучающая выборка

y — реальные значения классов в обучающей выборке

x — одномерный np.array-- тестовый пример

k — количество соседей, которые нужно рассматривать

Функция возвращает массив пар (класс, количество голосов) только для классов которые встречаются среди k ближайших соседей!

Для поиска ближайшего примера использовать евклидово расстояние.

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

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


Задача E. Leave-one-out (метод скользящего контроля)

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

Условие

Требуется реализовать функцию leave-one-out score на языке Python. Результат функции должен быть целочисленным, то есть его НЕ следует нормировать на размер выборки.


def loo_score(predict, X, y, k)     # integer loo score for predict function

predict — функция predict(X, y, x, k) , обучающая некоторый алгоритм на выборке X, y с параметром k и дающая предсказание на примере x

X — двумерный np.array — обучающая выборка

y — реальные значения классов в обучающей выборке

k — количество соседей, которые нужно рассматривать

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

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


0.160s 0.010s 21