1

我在为 LIBSVM 生成输入训练向量集时遇到了一些问题。我有 3 个类别及其相关的训练文档,其术语权重如下(仅假设)。

(标签/类别):1
词频向量(TF*IDF)
Document1-> 1:0.25 2:1.056 3:2.356
Document2-> 2:1.25 3:0.145 4:1.543
Document3-> 1:1.00 2:2.145 5: 3.543

(标签/类别):2
词频向量(TF*IDF)
Document4-> 1:0.25 2:1.056 3:2.356
Document5-> 2:1.25 3:0.145 4:1.543
Document6-> 1:1.00 2:2.145 5 :3.543

(标签/类别):3
词频向量(TF*IDF)
Document7-> 1:0.25 2:1.056 3:2.356
Document8-> 2:1.25 3:0.145 4:1.543
Document9-> 1:1.00 2:2.145 5:3.543

任何人都可以说如何将其转换为 LIBSVM 的训练向量集。这里 1:0.25 2:1.056 3:2.356 是术语索引及其权重。术语索引在全局字典中手动维护。

我也可以知道如何将测试文档转换为术语向量吗?

提前致谢。


嗨 Qnan .. 我已经按照你的建议准备了样本训练向量空间。你能告诉我我的向量形成是否正确吗?

(标签/类别):1

1 1:0.25 2:1.056 3:2.356 ->(训练实例 1-for Document1)
1 2:1.25 3:0.145 4:1.543 ->(训练实例 2-for Document2)
1 1:1.00 2:2.145 5:3.543 ->(训练实例 3-for Document3)

(标签/类别):2

2 1:0.25 2:1.056 3:2.356 ->(训练实例 4-for Document4)
2 2:1.25 3:0.145 4:1.543 ->(训练实例 5-for Document5)
2 1:1.00 2:2.145 5:3.543 ->(训练实例 6-for Document6)

(标签/类别):3

3 1:0.25 2:1.056 3:2.356 ->(训练实例 7-for Document7)
3 2:1.25 3:0.145 4:1.543 ->(训练实例 8-for Document8)
3 1:1.00 2:2.145 5:3.543 ->(训练实例 9-for Document9)

4

1 回答 1

4

格式在 LIBSVM 发行版的 README 文件中有描述,基本上是

<categoryA> <feature1>:<value1> <feature2>:<value2> <feature3>:<value3> ...

每个训练实例一行。特征索引也应该按升序排列。

测试集看起来完全一样,除了第一列可能包含一些固定数字,例如 0,如果您不知道该集的真实标签。

至于你的数据,我不太明白如何为相同Document1和相同的一组术语拥有所有这些不同的权重向量。你能澄清一下吗?

编辑:

格式没问题,如果你去掉注释,LIBSVM 运行得很好。假设您正在运行 Windows 并且文件test.txt如下所示,

1 1:0.25 2:1.056 3:2.356
1 2:1.25 3:0.145 4:1.543
1 1:1.00 2:2.145 5:3.543
2 1:0.25 2:1.056 3:2.356
2 2:1.25 3:0.145 4:1.543
2 1:1.00 2:2.145 5:3.543
3 1:0.25 2:1.056 3:2.356
3 2:1.25 3:0.145 4:1.543
3 1:1.00 2:2.145 5:3.543

您可以./libsvm-3.12/windows/svm-train.exe test.txt用于训练和./libsvm-3.12/windows/svm-predict.exe test.txt test.txt.model test.txt.out预测。在其他系统上,CMD 类似。

请注意,使用此数据,准确度不会高于 1/3,因为每个标签的数据集中存在相同的权重向量。

于 2012-08-13T13:55:31.357 回答