我在为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 - 用于Document1)
1 2:1.25 3:0.145 4:1.543 - >(训练实例2 - 用于Document2)
1 1:1.00 2:2.145 5:3.543 - >(培训实例3 - 用于Document3)
(标签/分类):2
2 1:0.25 2:1.056 3:2.356 - >(训练实例4 - 用于Document4)
2 2:1.25 3:0.145 4:1.543 - >(训练实例5-对于Document5)
2 1:1.00 2:2.145 5:3.543 - >(训练实例6-代表Document6)
(标签/分类):3
3 1:0.25 2:1.056 3:2.356 - >(训练实例7-用于Document7)
3 2:1.25 3:0.145 4:1.543 - >(训练实例8-对于Document8)
3 1:1.00 2:2.145 5:3.543 - >(训练实例9-为Document9)
答案 0 :(得分: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,因为数据集中的每个标签都存在相同的权重向量。