LibSVM输入格式

时间:2011-03-13 18:51:55

标签: java format machine-learning libsvm prediction

我想在文件中表示一组标记实例(数据)作为训练数据输入LibSVM。对于this问题中提到的问题。它将包括,

  1. 登录日期
  2. 登录时间
  3. 位置(国家/地区代码?)
  4. 星期几
  5. 真实性(0 - 非真实,1 - 真实) - 标签
  6. 如何格式化此数据以输入SVM?

2 个答案:

答案 0 :(得分:4)

您是在询问数据格式还是如何转换数据?对于后者,你将不得不尝试找到正确的方法来做到这一点。一般的想法是将您的数据转换为名义或序数值属性。其中一些很简单 - #4,#6--其中一些很难 - #1-#3。

例如,您可以将#1表示为日,月和年的三个属性,或者只将其转换为类似UNIX的时间戳。

知识产权更难 - 没有直接的方式将其转换为有意义的序数值。根据您的问题,将每个IP用作名义属性可能没有用。

一旦弄明白,转换数据,检查LibSVM文档。一般格式后跟:即+1 1:0 2:0 ..

答案 1 :(得分:1)

我相信在之前的答案中有一个未说明的假设。未说明的假设是libSVM的用户知道他们应该避免将分类数据放入分类器中。

例如,libSVM将不知道如何处理国家/地区代码。如果您正在尝试预测哪些访问者最有可能在您的网站上购买某些内容,那么如果您的国家/地区代码列表中的美国位于乍得和尼日尔之间,那么您可能会遇到问题。来自美国的膨胀可能会扭曲对其附近国家的预测。

为了解决这个问题,我会为每个正在考虑的国家(也许是“其他”类别)创建一个类别。然后,对于要分类的每个实例,我将所有国家/地区类别设置为零,但实例所属的类别除外。 (要使用libSVM稀疏文件格式执行此操作,这不是什么大问题)。