1.KNN
K近邻算法的工作机制就是给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。
2.思维导图
3.代码
import numpy as np #训练数据 class K_neigbors: def __init__(self,k): self.k = k def fit(self,x_train,y_train): self.x = x_train self.y = y_train def predict(self,x_test): dist_list = [(-np.linalg.norm(x_test - self.x[i], ord=2), self.y[i], i) for i in range(len(self.y))] #计算欧式距离 target = list(self.y) idol_target = 0 for i in range(self.k): index = dist_list.index(max(dist_list)) #选取最大值 # target_try = target[index] #最大值target dist_list.remove(dist_list[index]) target.remove(target[index]) if(target_try<0): idol_target -= 1 else: idol_target += 1 if idol_target >=0: return 1 else: return -1 def main(): #训练数据 x_train = np.array([[5,9],[9,6],[4,7],[2,3],[8,1],[7,2]]) y_train = np.array([1,1,1,-1,-1,-1]) #测试数据 x_test = np.array([5,3]) #实例化模型 k=3 model = K_neigbors(k=k) model.fit(x_train,y_train) y_predict = model.predict(x_test) print("k={},被分类为:{}".format(k, y_predict)) if __name__ == "__main__": main()