2013-11-22 73 views
0

我目前正在测试我的二进制SVM Java实现的培训阶段。 我测试了如下图所示的小数据,但我需要我的支持向量机适用于已知数据集像垃圾邮件/不是垃圾邮件,图像等构建Svm培训集的困惑

  1. 我SVM能够读取数值,所以我需要也用一些真实的数据测试它。
  2. 后来我想转到图像。

要找到一个真正的数据集,我通过不同的搜索回购协议,但所有我能找到的数值+字符,文本等

而且我发现一个spam Archive

  1. 但我该如何处理?
  2. 我想我需要使用tfidf将文本转换为数字数据,然后应用我的SVM。
  3. 但是,我如何指示他们为1/-1类。

通常情况下输入的格式是正确的?

0 0 1 
3 4 1 
5 9 1 
12 1 1 
8 7 1 
9 8 -1 
6 12 -1 
10 8 -1 
8 5 -1 
14 8 -1 

如何将垃圾邮件归档数据转换为上述格式?

+0

如果您正在寻找预煮测试数据,LIBSVM小组会提供大量测试数据。 – tmyklebu

+0

谢谢你的回复tmyklebu:你可以与我分享这些数据集的链接。 –

回答

2

这是关于功能的选择。输入当然是成对的文件和标签。但是特征提取包含在训练过程中。最直接的方法是二进制表示法,在这种方法中,我们检查特定单词是否出现在某些特定文档中。它也被称为术语频率:特征向量中的第i个分量是时间词wi出现在一个文档中。这里的矢量是一个包含训练文档中所有单词的已建立的字典。您还可以考虑反向文档频率:所有文档中出现wi的次数除以文档总数。 仅供参考,有关垃圾邮件支持向量机的一篇研究论文: http://classes.soe.ucsc.edu/cmps290c/Spring12/lect/14/00788645-SVMspam.pdf

+0

每个消息的一个特征向量。如果我将所有消息转换为TFIDF,我将获得数字值..但我很困惑,如何将label.1设置为垃圾邮件,-1设置为非垃圾邮件。那是archicev垃圾邮件的组合而不是垃圾文本数据? –

+1

@Sree,您可以选择在您的训练集中出现频率最高的单词,比如说1000个文档频率项。如果发生的次数少于20次,请不要使用这些字。通常培训集是〜10^5(文件或电子邮件)。 – lennon310

+0

因此,在为tfidf做好垃圾邮件准备工作后,我应该将所有数据标记为1,对于非垃圾邮件标签为-1,然后发送给svm ... –