SVM机器学习:LibSVM中的特征表示

我在使用LibSVM对书面文本进行分类(性别分类)。

我遇到了一些问题,不明白如何创建具有多个特征的LibSVM训练数据。

LibSVM中的训练数据构建如下:

label index1:value1 index2:value2 

假设我想使用以下特征:

  • Top_k单词:按标签使用最多的k个单词
  • Top_k二元组:最常用的k个二元组

例如,计数可能会如下所示:

               Word count             Bigram count         |-----|-----------|         |-----|-----------|         |word |   counts  |         |bigra|   counts  |         |-----|-----|-----|         |-----|-----|-----|  index  |text | +1  | -1  |  index  |text | +1  | -1  |         |-----|-----|-----|         |-----|-----|-----|      1  |this | 3   | 3   |      4  |bi   | 6   | 2   |      2  |forum| 1   | 0   |      5  |gr   | 10  | 3   |      3  |is   | 10  | 12  |      6  |am   | 8   | 10  |         |...  | ..  | ..  |         |..   | ..  | ..  |         |-----|-----|-----|         |-----|-----|-----|

假设k = 2,一个训练实例会是这样的吗?(计数与之前无关)

Label Top_kWords1:33 Top_kWords2:27 Top_kBigrams1:30 Top_kBigrams2:25

还是像这样(特征混合时是否有影响)?

Label Top_kWords1:33 Top_kBigrams1:30 Top_kWords2:27  Top_kBigrams2:25

我只想知道多个不同特征的特征向量是什么样的,以及如何构建它。

编辑:

根据上面的更新表格,这样的训练数据正确吗?

示例

 1 1:3 2:1 3:10 4:6 5:10 6:8-1 1:3 2:0 3:12 4:2 5:3  6:10 

回答:

libSVM的表示是纯粹数字的,因此

label index1:value1 index2:value2 

意味着每个“标签”、“索引”和“值”都必须是数字。在你的情况下,你需要为你的特征编号,例如

 1 1:23 2:47 3:0 4:1

如果某些特征的值为0,你可以省略它

 1 1:23 2:47 4:1

记得要按递增顺序排列特征。

一般来说,libSVM不是为处理文本设计的,我不建议你这样做——而是使用一些已经存在的库,这些库可以轻松处理文本并封装了libsvm(例如NLTKscikit-learn

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注