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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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