分类特征

时间:2010-09-02 01:38:59

标签: libsvm

对于LibSVM。

在“支持向量分类的实用指南”中,建议使用m数来表示m-category属性。例如,{red,green,blue}可以表示为(0,0,1),(0,1,0),(1,0,0)。

但在README中,它表示索引中的值:值对只能取实数。

任何人都知道如何在数据文件中表示(0,0,1)?

2 个答案:

答案 0 :(得分:3)

这对libsvm来说不是必需的,因为它使用一对一的方法来训练SVM(事实上,在他们的文档中,他们将您引用到一篇研究文章中,其中一对一与一对一进行比较并且表现更好)。如果你有4个类别a,b,c,d libsvm实际上在内部创建6个svms,一个用于b的经文,一个用于经文c,一个用于经文d,一个用于b与d,一个用于c经文d。当被要求进行分类时,它全部运行6并使用投票系统来确定获胜类别。这实际上比仅使用(1,0,0,..)(0,1,0 ..)类别输入要好。

如果你看一下样本数据集 libsvm data examples。您将看到为每个类别分配一个整数,并且该整数位于条目的前面,然后跟随该数据元素的值向量的每个元素如下:如果我有5个类的数据,每个数据元素有3个向量和数据向量 (3.3,1.5,0.5,7.3,3.5)属于第4类,我的数据文件的一行看起来像

4 1:3.3 2:1.5 3:0.5 4:7.3 5:3.5

这真的很丑陋,但我认为这是因为他们正在使用一种约会,其中零矢量条目被删除,例如如果向量(.5,0,0,0,.7)在类别2中,则相应的数据行将是(我认为)

2 1:.5 5:.7

它的价值(如果我是正确的)是在大量数据的一些问题中,大量条目是零。

答案 1 :(得分:0)

如果分类属性可以有3个值(例如红色,绿色,蓝色),那么根据libsvm指南,数据文件中将有3个功能。假设另一个特征权重,您的编码将如下所示,重量为100个单位,颜色=绿色。

标签重量为红绿蓝

+1 1:100 2:0 3:1 4:0