语法错误:实现 k 最近邻分类器时无法将值分配给运算符



*编辑为包含完整错误堆栈

如果这是一个愚蠢的问题,请原谅我,我完全是个傻瓜。

我正在使用numpy在python中创建一个k近邻分类器。但当我尝试在CIFAR-10图像(重塑为一维阵列(上运行knn_classifier.predict((时,我得到了这个错误。

File "<ipython-input-9-9df7a1ae9044>", line 1
y-pred = knn.predict(x_ts, k=5)
^
SyntaxError: can't assign to operator

当我没有在早期版本的分类器中包含"k"(预测中的方法varibale(时,这种情况就没有发生,所以我假设它与"k"有关,但我不知道我做错了什么。

这是我写的:


class knn_classifier:

def __init__(self):

pass

def train(self, x, y):

self.xtr = x
self.ytr = y

def predict(self, x, k=1):

num_images = x.shape[0]
y_pred = np.zeros(num_images, dtype=self.ytr.dtype)
for i in range(num_images):
distance = np.sum(np.abs(self.xtr - x[i,:]), axis=1)
lowest = np.argsort(distance)
lowest = lowest[:k]
lowest_k = list(self.ytr[lowest])
y_pred[i] = np.argmax(np.bincount(lowest_k))
return y_pred  


这只是一个拼写错误。你写了";y-pred";用破折号而不是下划线,Python将其解释为操作y减去pred

最新更新