Menu
CoddyTech

Метод predict

Урок 8 из 19 курса Введение в машинное обучение на Coddy.

challenge icon

Задание

Средне

Заполните метод predict.

Метод должен принимать список X новых точек.

Для каждой новой точки вычислите расстояние между этой точкой и всеми остальными точками, хранящимися в self.points. Извлеките метки self.k ближайших точек.

Найдите мажоритарную метку (наиболее часто встречающуюся) среди ближайших точек, это и будет предсказанный класс.

Например, вот наши точки и метки:

points(1, 5)(5, 0)(3, 2)(8, 1)(4, 4)(7, 7)
labelsABABCA

Вот новая точка (3, 3)

Расстояние между этой точкой и всеми остальными точками составляет:

points(1, 5)(5, 0)(3, 2)(8, 1)(4, 4)(7, 7)
distance from (3, 3)813129232
labelsABABCA

Теперь, если k = 3, нам нужно найти 3 ближайшие точки к нашей новой точке. Вот ближайшие: (3, 2), (1, 5) и (4, 4). Метки, соответствующие этим точкам: A, A, C. У нас есть 2 A и 1 C. A является большинством, поэтому новая точка классифицируется как A.

Метод predict должен возвращать список меток, которые были классифицированы для новых точек.

Чтобы найти мажоритарную метку в списке меток, используйте: max(set(labels), key = labels.count)

Попробуйте сами

class KNN:
    def __init__(self, k):
        self.points = None
        self.labels = None
        self.k = k
    
    def distance(self, point_a, point_b):
        # Write your code here
        return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
    
    def fit(self, X_train, y_train):
        # Write your code here
        self.points = X_train
        self.labels = y_train

    def predict(self, X_test):
        pass

Все уроки раздела Введение в машинное обучение

Потренируйтесь самостоятельно: Онлайн-компилятор Python