Метод predict
Урок 8 из 19 курса Введение в машинное обучение на Coddy.
Задание
СреднеЗаполните метод predict.
Метод должен принимать список X новых точек.
Для каждой новой точки вычислите расстояние между этой точкой и всеми остальными точками, хранящимися в self.points. Извлеките метки self.k ближайших точек.
Найдите мажоритарную метку (наиболее часто встречающуюся) среди ближайших точек, это и будет предсказанный класс.
Например, вот наши точки и метки:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| labels | A | B | A | B | C | A |
Вот новая точка (3, 3)
Расстояние между этой точкой и всеми остальными точками составляет:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| distance from (3, 3) | 8 | 13 | 1 | 29 | 2 | 32 |
| labels | A | B | A | B | C | A |
Теперь, если 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