KNN算法优化

KNN缺点(1):样本不平衡问题

比如下列Y点,本应该属于红色,但是如果采用KNN准则,属性就被误判成蓝色了。

缺点(1)解决方法:距离加权加权

将我的博文:https://blog.youkuaiyun.com/weixin_41770169/article/details/81560946

将距离该样本距离小的邻居权值大,距离该样本距离大的邻居权值则相对较小,由此,将距离远近的因素也考虑在内,避免因一个样本数量过多导致误判的情况。

 

KNN缺点(2):计算量太大

第一个是需要存储全部的训练样本

第二个是计算量较大,因为对每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。

 

缺点(2)解决方法:kd-tree

见我的博文:https://blog.youkuaiyun.com/weixin_41770169/article/details/81565514

kd树(K-dimensiontree)是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。kd树是是一种二叉树,表示对k维空间的一个划分,构造kd树相当于不断地用垂直于坐标轴的超平面将K维空间切分,构成一系列的K维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。

 

kd-tree缺点:对于20维以下的数据效果较好,但是对于高维数据,处理困难

解决方法:ball-tree

ball-tree:专门针对kd-tree对高维数据处理困难提出的

 

kd-tree和ball-tree对海量数据可能处理还是不够,因此提出LSH:

LSH局部敏感哈希,专门针对海量高维数据提出的KNN优化算法

### KNN算法在WiFi信号强度和稳定性优化中的应用 #### 使用KNN算法改善WiFi信号质量的核心思路 为了利用KNN算法优化WiFi信号强度和稳定性,主要策略在于通过历史数据的学习,识别并预测最佳的无线接入点(AP),从而指导终端设备自动切换至最优信道。具体来说: - **信号特征提取**:收集来自多个位置的不同时间戳下的RSSI样本作为训练集的一部分[^1]。 - **相似度评估**:当新接收到一组RSSI读数时,计算这些数值与已有记录间的欧氏距离或其他形式的距离度量标准。 - **邻居选取**:依据设定参数`k`选出最接近当前观测情况的历史实例集合。 - **决策制定**:综合考虑选定近邻的信息,比如它们所属的最佳AP及其对应的平均RSSI水平,进而给出推荐方案。 ```python import numpy as np from sklearn.neighbors import NearestNeighbors def optimize_wifi_signal(rssi_samples, k=5): """ 利用KNN算法优化Wi-Fi连接 参数: rssi_samples (list of lists): 各个采样点处测得的一系列RSSI值 k (int): 考虑最近多少个邻居 返回: tuple: 推荐使用的接入点ID及预期信号强度 """ # 假设rssi_samples已经包含了足够的历史数据用于建模 model = NearestNeighbors(n_neighbors=k).fit(rssi_samples) current_rssi = [-70,-80,-90] # 当前时刻获取到的新一轮RSSI测量结果 distances, indices = model.kneighbors([current_rssi]) best_ap_id = None avg_strength = sum([rssi_samples[i][-1] for i in indices.flatten()]) / len(indices.flatten()) return best_ap_id, avg_strength ``` 此函数接受一系列先前存储下来的RSSI样本,并基于给定数量的临近节点(`k`)来进行匹配查询。最终返回的是一个元组,其中包含建议采用的具体接入点编号以及估计可获得的最大可能信号强度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值