室内定位系列(三)——位置指纹法的实现(KNN)
位置指纹法可以看作是分类或回归问题(特征是RSS向量,标签是位置),监督式机器学习方法可以从数据中训练出一个从特征到标签的映射关系模型。kNN是一种很简单的监督式机器学习算法,可以用来做分类或回归。
对于RSS向量\(s\),分别计算它与指纹库中各个RSS向量{\(s_1, s_2, ..., s_M\)}的距离(比如欧氏距离),选取最近的\(k\)个位置指纹(一个指纹是一个RSS向量与一个位置的对应)。指纹定位算法
对于knn回归,标签是坐标x和坐标y,可以进行数值计算,使用这k个指纹的位置坐标取平均,得到作为定位结果。
对于knn分类,将定位区域划分为1m$\times$1m的网格,每个网格是看作一个类别,用网格标号代替,对k个网格标号计数投票,选择票数做多的网格作为定位结果。指纹定位算法
kNN是一种lazy式的学习方法,在上面的过程中不需要使用训练数据进行“学习”,在定位的时候直接在训练数据中搜索就可以。一些工具包中的kNN算法的训练过程中会建立一个kd树(一种数据结构),有利于预测时的搜索。
Github地址,包括matlab版本和python版本
accuracy: 2.24421479398 maccuracy: 2.73213398632 m
加入数据预处理和交叉验证

accuracy: 2.22455511073 m

作者:rubbninja
出处:
关于作者:目前主要研究领域为机器学习与无线定位技术,欢迎讨论与指正!
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-32195-1.html
600万
这都够进监狱了