LIBSVM的多类表示

2024-06-07 05:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是制作一个多类分类器,用于处理不同的文件,这些文件将至少使用两个类(或标签)进行标记。这些文件是议会的倡议,因此每个文件都将被编入至少一对值的同义词库中。在

我在python版本中使用'libsvm',因为在python中删除停止字、标记化和词干处理似乎更容易,这要归功于Snowball、NLTK。。。在

此版本不能直接使用多分类
然而,可以编程一个生成总共k*(k-1)/2的多类分类器模型(其中“k”是类的数量)。在

LIBSVM的表示是:

<class/target>[ <attribute number>:<attribute value>]*   

那么对于一个包含5个类的文件,我是否应该生成5倍于前一行的只更改类?在

例如:

11:3 2:4 6:5….
2 1:3 2:4 6:5….
3 1:3 2:4 6:5….
4 1:3 2:4 6:5….
5 1:3 2:4 6:5…。在

谢谢和问候。在


Tags: 文件标记版本目标分类器分类attribute标签
1条回答
网友
1楼 · 发布于 2024-06-07 05:27:39

你很困惑

  • 多类场景-通常有2个以上的类,但每个对象都被分配了一个
  • 多标签场景-为每个对象分配多个标签

支持向量机在其基本公式/实现中不能做到以上任何一种。尽管这两个问题都很容易分解。在

第一种方法通常使用one-vs-all或one-vs-one来实现,这两种方法都是在scikit-learn中实现的,其中python绑定到libsvm。在

您的场景看起来很像多标签,在这种情况下,通过将问题分解为K个独立的问题,只需创建K个不同的训练集,每个训练集都回答“给定文件是否有标签i?”训练K个不同的支持向量机,每一个简单地给你一个答案(我们假设标记过程是独立的,这是一个简化,但是其他方法需要结构化的支持向量机方法,就像svmstruct中可用的方法)。在

不能为多标签分类创建单个libsvm训练文件。您引用的文档引用的是多类,这不是您的情况,只需要使用K个不同的标签名称,而不是复制行。在

相关问题 更多 >