predict 方法
Coddy 机器学习入门 课程的第 8 课,共 19 课。
挑战
中等补全 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 在线编译器