如何在Java中使用LibSVM?
我正在尝试使用蓝牙加密狗实现一个室内位置跟踪系统。这个想法是使用android设备四处走动,并根据房间周围放置的蓝牙狗的信号强度计算您在房间中的位置。 为了做到这一点,我决定使用机器学习尽可能接近RSSI作为距离,例如米。 我大学的一位讲师告诉我,我正在寻找LibSVM,所以我一直在阅读。 我看了一下,似乎无法理解培训系统所需的数据。 我将拥有的数据是:如何在Java中使用LibSVM?,java,android,machine-learning,libsvm,rssi,Java,Android,Machine Learning,Libsvm,Rssi,我正在尝试使用蓝牙加密狗实现一个室内位置跟踪系统。这个想法是使用android设备四处走动,并根据房间周围放置的蓝牙狗的信号强度计算您在房间中的位置。 为了做到这一点,我决定使用机器学习尽可能接近RSSI作为距离,例如米。 我大学的一位讲师告诉我,我正在寻找LibSVM,所以我一直在阅读。 我看了一下,似乎无法理解培训系统所需的数据。 我将拥有的数据是: 保存在数据库中的每个加密狗的位置(以及mac地址),x和y坐标 离我的android设备最近的加密狗的接收信号强度指示器(RSSI) mac
- 保存在数据库中的每个加密狗的位置(以及mac地址),x和y坐标
- 离我的android设备最近的加密狗的接收信号强度指示器(RSSI)
- mac地址将用于查询数据库中的某些加密狗
提前感谢我认为你不能用支持向量机来做你所说的(计算你在房间里的位置…)支持向量机是一种有监督的二进制分类算法。也就是说,如果您给它一些数据和一些正/负类,它将学习一个分类器,可以告诉您新的、未观察到的数据点是正的还是负的。因此,您可以训练SVM来告诉您一个人是否在房间的一侧而不是另一侧(南侧/北侧),但不知道他们的实际位置 看起来你想做的事情根本不需要机器学习。见以下帖子:
您要做的是获取尽可能多的数据(data=RSSI,label=distance)并将它们嵌入到度量空间中,可能是在您拥有的加密狗数量的维度中。然后,给定一些新数据(RSSI信号强度),找到空间中的最近邻,并计算距离上的某种平均值。由于您的输出是一个实数(距离),我们讨论的是回归问题,而不是分类问题。 我不清楚您要查找的值是与加密狗最近的距离,还是您的 输出将是到所有加密狗的一组距离。这是你需要首先澄清的事情 有几种算法可以做到这一点,但由于你问的是支持向量机,我会范围 这个答案正好说明了这一点。我假设你的输出只是一个表示距离的值,如果你是 期望有多维输出,并且SVR(支持向量回归)只提供一维输出, 您需要为每个维度训练一个实例 libsvm的参数之一是svm_类型,因为问题是一个回归问题,您应该使用选项3-εSVR 对于核型,我建议考虑RBF(选项2 -径向基函数) 对于您的数据,这是一种可能的安排:
| dongle 1 | dongle 2 | dongle 3 | desired output
| x | y | RSSI | x | y | RSSI | x | y | RSSI |
---------------------------------------------------------------------------------
| 10.0 | 11.1 | 2.3 | 0.0 | 1.1 | 0.3 | 17.0 | 19.1 | 0.3 | 10.3
| 30.0 | 17.1 | 0.3 | 10.0 | 1.1 | 0.9 | 11.0 | 9.1 | 0.2 | 18.7
因此,这将转化为(大括号只是为了清楚起见):
始终建议在[-1,1]或[0,1]之间缩放数据。
此外,您可以在这里找到一些示例数据
希望这有帮助我已经为室内定位实施了WiFi指纹识别,因此我知道这里存在一些问题 首先,为了确定您的位置,您是否在执行指纹或信号强度三边测量(人们错误地称之为三角测量)?三边测量是将多个球体相交以在空间中找到位置的过程。另一方面,指纹识别是一个分类问题,它将信号解析到一个没有计算实际距离的位置 由于多径衰落等无线问题,室内三边测量非常困难。这些影响将导致你的信号衰减,这反过来将导致你的距离估计关闭 指纹只是一个分类问题。与三边测量一样,它假设加密狗的位置不变。然而,与三边测量不同,它根本不使用距离 三边测量的优点是,假设距离估计值是正确的(实际上很难实现),您将能够在连续(非离散)范围内解析您的位置。由于指纹是一个分类问题,它必须分类到一组固定的离散位置之一;例如
[10.3] [1]:[10.0] [2]:[11.1] [3]:[2.3] [4]:[0.0] [5]:[1.1] [6]:[0.3] [7]:[17.0] [8]:[19.1] [9]:[0.3]
[18.7] [1]:[30.0] [2]:[17.1] [3]:[0.3] [4]:[10.0] [5]:[1.1] [6]:[0.9] [7]:[11.0] [8]:[9.1] [9]:[0.2]
MAC_1:-87, MAC_2:-40, MAC_3:-91, class=location_A
MAC_1:-31, MAC_2:-90, MAC_3:-79, class=location_B
MAC_1:-89, MAC_2:-71, MAC_3:-22, class=?