Нашли ошибку?

Жанр трека по соседям

СредняяРеализацияГлава 10

#k ближайших соседей#классификацияid: ga-genre-classify

Треки описаны признаками [темп, энергичность, акустичность]. Для обучающей выборки жанры известны. Напишите classify(train, query, k): функция определяет жанр трека query голосованием k ближайших соседей (евклидово расстояние).

Пример

train = [
    ([120, 0.9, 0.1], "электроника"),
    ([125, 0.8, 0.2], "электроника"),
    ([70, 0.3, 0.9], "фолк"),
    ([80, 0.4, 0.8], "фолк"),
    ([118, 0.7, 0.3], "поп"),
]
classify(train, [122, 0.85, 0.15], 3)   # "электроника"

Правила

Решение

def classify(train: list[tuple[list[float], str]], query: list[float], k: int) -> str:
    """Жанр по голосованию k ближайших соседей."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 genre_classify.py — тесты те же, результат покажет ✓ / ✗ и итог.