学号:20021210595 姓名:杨婵
转载自:https://www.cnblogs.com/rubbninja/p/6134481.html
【嵌牛导读】位置指纹法中最常用的算法是k最近邻(kNN):选取与当前RSS最邻近的k个指纹的位置估计当前位置,简单直观有效。本文介绍kNN用于定位的基本原理与具体实现(matlab、python)。
【嵌牛鼻子】wifi,室内定位,位置指纹法
【嵌牛提问】如何实现位置指纹法?
【嵌牛正文】
基本原理
位置指纹法可以看作是分类或回归问题(特征是RSS向量,标签是位置),监督式机器学习方法可以从数据中训练出一个从特征到标签的映射关系模型。kNN是一种很简单的监督式机器学习算法,可以用来做分类或回归。
对于在线RSS向量ss,分别计算它与指纹库中各个RSS向量{s1,s2,...,sMs1,s2,...,sM}的距离(比如欧氏距离),选取最近的kk个位置指纹(一个指纹是一个RSS向量与一个位置的对应)。
对于knn回归,标签是坐标x和坐标y,可以进行数值计算,使用这k个指纹的位置坐标取平均,得到作为定位结果。
对于knn分类,将定位区域划分为1m××1m的网格,每个网格是看作一个类别,用网格标号代替,对k个网格标号计数投票,选择票数做多的网格作为定位结果。
kNN是一种lazy式的学习方法,在上面的过程中不需要使用训练数据进行“学习”,在定位的时候直接在训练数据中搜索就可以。一些工具包中的kNN算法的训练过程中会建立一个kd树(一种数据结构),有利于在线预测时的搜索。
具体实现
数据来源说明:http://www.cnblogs.com/rubbninja/p/6118430.html
导入数据
knn回归
knn分类
定位算法分析
作者:[rubbninja](http://www.cnblogs.com/rubbninja/) 出处:[http://www.cnblogs.com/rubbninja/](http://www.cnblogs.com/rubbninja/) 关于作者:目前主要研究领域为机器学习与无线定位技术,欢迎讨论与指正! 版权声明:本文版权归作者和博客园共有,转载请注明出处。
网友评论