如何在 Java 中使用 LibSVM?

Aim*_*nes 5 java android machine-learning rssi libsvm

我正在尝试使用蓝牙加密狗实现室内位置跟踪系统。这个想法是用安卓设备四处走动,并根据房间周围蓝牙加密狗的信号强度计算您在房间中的位置。为了做到这一点,我决定使用机器学习来尽可能接近地将 RSSI 近似为距离,例如米。我大学的一位讲师告诉我 LibSVM 是我正在寻找的东西,所以我一直在阅读。我看过本教程,似乎无法理解训练系统所需的数据。我将拥有的数据是:

  • 保存在数据库中的每个加密狗的位置(以及 mac 地址)、x 和 y 坐标
  • 最靠近我的 android 设备的加密狗的接收信号强度指示器 (RSSI)
  • mac 地址将用于查询某些加密狗的数据库

我知道数据必须采用 SVM 格式,但我有点不确定输入数据和输出数据应该是什么。下面的示例取自我提到的教程,显示一个男人是一个班级,一个女人是一个班级。那么就我而言,我是否只有一类“加密狗”?并且所有值加密狗都应该反映我存储在数据库中的值吗?

男声:低身材:大收入:好

女声:高身材:苗条收入:票价

  1. 将特征值转换为其数字表示。假设最好的薪水是 5,最差的薪水是 1(或没有薪水 = 0),这与其他枚举变量相同。
  2. 我们有两个班,男人和女人。将类转换为数值:男人 = 1,女人 = -1
  3. 以libsvm数据格式保存:

[class/target] 1:[firstFeatureValue] 2:[secondFeatureValue] etc. 例如:一个工资高、声音低、身材矮小的女性会被编码为:-1 1:5 2:1.5 3:1.8

SVM的输入文件格式一般为

[label] [index1]:[value1] [index2]:[value2] ... [label] [index1]:[value1] [index2]:[value2] ...

有人可以举个例子说明我应该瞄准什么吗?

这对我来说都是全新的,所以任何帮助我前进的有用提示或技巧都会很棒。提前致谢