java - 如何使用 svm 创建用于文本分类的 vector 空间

标签 java machine-learning svm libsvm

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

(标签/类别):1
词频 vector (TF*IDF)
文档 1-> 1:0.25 2:1.056 3:2.356
文档 2-> 2:1.25 3:0.145 4:1.543
文档 3-> 1:1.00 2:2.145 5:3.543

(标签/类别):2
词频 vector (TF*IDF)
文档 4-> 1:0.25 2:1.056 3:2.356
文档 5-> 2:1.25 3:0.145 4:1.543
文档 6-> 1:1.00 2:2.145 5:3.543

(标签/类别):3
词频 vector (TF*IDF)
文档 7-> 1:0.25 2:1.056 3:2.356
文档 8-> 2:1.25 3:0.145 4:1.543
文档 9-> 1:1.00 2:2.145 5:3.543

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

我还可以知道如何将测试文档转换为术语 vector 吗?

提前致谢。


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

(标签/类别):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)

最佳答案

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

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

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

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

至于您的数据,我不太明白您如何为相同的 Document1 和相同的术语集设置所有这些不同的权重 vector 。你能澄清一下吗?

编辑:

格式没问题,如果去掉注释,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 测试。 txt test.txt.model test.txt.out 用于预测。在其他系统上,CMD 是类似的。

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

关于java - 如何使用 svm 创建用于文本分类的 vector 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934259/

相关文章:

python - SVM 的余弦相似度内核

R SVM 阿尔法系数

java - 读取文件页眉和页脚的程序

Java - 读取和写入文本文件

java - 如何渲染实时整数?

Java服务器数据存储的最佳策略是什么?

python - Azure 机器学习环境 : install a package from a file?

python - Scikit-learn χ²(卡方)统计量和相应的列联表

python - scikits学习和nltk : Naive Bayes classifier performance highly different

java - 使用 liblinear (java) 进行概率预测,直接在代码中使用分类器