手撕K最近邻算法(KNN)
d {a: 1, b: 2, c: 3} print(d.keys()) # dict_keys([a, b, c]) print(list(d.keys())) # [a, b, c] for key in d: # 直接遍历字典默认遍历键 print(key) for key in d.keys(): # 等价写法 print(key) print(d.values()) # dict_values([1, 2, 3]) print(list(d.values())) # [1, 2, 3] for value in d.values(): print(value) print(d.items()) # dict_items([(a, 1), (b, 2), (c, 3)]) print(list(d.items())) # [(a, 1), (b, 2), (c, 3)] for key, value in d.items(): print(key, value) print(d[a]) # 1 print(d.get(x)) # None print(d.get(x, 0)) # 0from typing import List import math class Solution: def knn_classification(self, X: List[List[float]], y: List[int], x_test: List[float], K: int) - int: 实现KNN分类根据最近的K个邻居进行多数投票得到最终预测标签 distances [] for i,train_point in enumerate(X): s 0 for d in range(len(x_test)): s (train_point[d]-x_test[d])**2 dist math.sqrt(s) distances.append((dist,i)) distances.sort(keylambda x:x[0]) nearest distances[:K] nearest_label [y[i] for _,i in nearest] count {} for label in nearest_label: count[label] count.get(label,0) 1 #y_pred max(count,keycount.get) #y_pred max(count,keylambda label:count[label]) #考虑平票 max_count max(count.values()) y_pred min(label for label, cnt in count.items() if cnt max_count) return y_pred
上一篇/下一篇内容由系统自动关联
返回资讯列表 →