KNN 线性扫描算法可做线性回归也可做分类。概念详见前篇
示例:
输入数据:训练数据T={(X1,Y1)……(XN,YN)}
待输入数据:(x_test)
K值
左图为输入,右图为图形界面
K 为1-6时结果
1.算法步骤
2.编码步骤
3.问题 每次处理一个点。距离列表排序。
1.算法步骤
1.1计算x_test 与xi的欧式距离
1.2.欧式距离排序
1.3.取前K个最小距离,对应训练数据点的类型Y
1.4.对K个Y值进行统计
1.5.返回频率出现最高的Y值
2.编码步骤
2.1.输入 训练集,验证集
X_train=np.array([[5,4],
[9,6],
[4,7],
[2,3],
[8,1],
[7,2]])
y_train=np.array([1,1,1,-1,-1,-1])
X_new = np.array([[5, 3]])
2.2.绘图
2.3.调参 K(1-6)总共6个数据
K值是用交叉验证的方式取值。
3.问题:
- 现在每次只处理一个点,多数据处理
for 循环
多进程
2.距离列表排序、浪费时间
用堆这个数据结构