【问题标题】:File format for classification using SVM light使用 SVM light 进行分类的文件格式
【发布时间】:2013-08-22 18:28:18
【问题描述】:

我正在尝试使用 SVM light 构建一个分类器,该分类器将文档分类为两个类之一。我已经对分类器进行了训练和测试,并将模型文件保存到磁盘中。现在我想用这个模型文件对全新的文档进行分类。这应该是什么输入文件格式?它可能是纯文本文件(我认为这行不通)还是只是文本文件中存在的特征的简单列表,没有任何类标签和特征权重(在这种情况下,我必须跟踪索引训练过程中特征向量中的特征)还是其他格式?

【问题讨论】:

    标签: machine-learning svm svmlight


    【解决方案1】:

    进行预测的文件格式与进行测试和训练的文件格式相同,即

    <line> .=. <target> <feature>:<value> ... <feature>:<value> # <info>
    <target> .=. +1 | -1 | 0 | <float> 
    <feature> .=. <integer> | "qid"
    <value> .=. <float>
    <info> .=. <string>
    

    但是要进行预测,目标是未知的,因此您必须使用 0 值作为目标。这是唯一的区别。我希望这可以帮助某人

    【讨论】:

      【解决方案2】:

      训练和测试文件的格式必须相同,每个实例的结果为如下形式的一行:

      <line> .=. <target> <feature>:<value> ... <feature>:<value> # <info>
      <target> .=. +1 | -1 | 0 | <float> 
      <feature> .=. <integer> | "qid"
      <value> .=. <float>
      <info> .=. <string>
      

      例如(从 SVM^light 网站复制意大利面):

      -1 1:0.43 3:0.12 9284:0.2 # abcdef
      

      您可以咨询SVM^light website了解更多信息。

      【讨论】:

      • Marc 我不想在这里“测试”分类器。我现在想将它用于对完全未知的文档进行分类的实际目的。在“测试”文件中,我知道文档所属的类,因此我可以相应地准备文件。当我尝试进行“真实”分类时,我不知道文档的类别和特征值(假设我在训练和测试阶段使用 tf-idf 值,那么如果是,则没有 idf 值一份完全未知的文件)。那么文件的格式是什么?
      • @ritesh 使用分类器通常称为测试阶段,即使您对评估其准确性不感兴趣。您可以省略第一列(不确定 SVM^light 是否允许这样做,我知道 libsvm 可以),或者在此处使用您选择的值(绝对有效)。标签仅用于报告准确性。因此,如果您没有它们,只需使用您最喜欢的数字,但请注意,任何报告的准确性都是完全虚假的。
      • 我必须承认我现在真的很困惑。假设我在第一列中输入了任意数字(而不是类标签)。但是我该如何计算特征值[格式为&lt;feature&gt;:&lt;value&gt;....&lt;feature&gt;:&lt;value&gt;]?对于训练,我使用 tf-idf 以及类频率来计算这个值,该值考虑了训练文档的总数以及该文档所属的类中的训练文档的总数。对于测试,这可能是一个以不同于训练中使用的方式计算的值吗?如果是,这个值可能是多少?
      • 你是如何制作训练集的?以同样的方式制作测试集......我看不出是什么让你感到困惑。您必须以与对训练集所做的完全相同的方式预处理您的测试集。根据测试文档计算 tf,并根据您用于训练集的 idf 进行归一化。
      • 好的,一切都清楚了。我无法理解如何获得 idf 值,但现在我发现它与培训相同。非常感谢 Marc 的耐心和时间!
      猜你喜欢
      • 2014-01-15
      • 2012-05-31
      • 2013-07-16
      • 2016-12-01
      • 2017-02-24
      • 2013-02-04
      • 2016-09-13
      • 2014-05-12
      • 2012-04-02
      相关资源
      最近更新 更多