2014-03-01 87 views
0

我需要完成Weka中的文本分类任务。我有以下层次结构中的数据文件。weka混淆StringToWordVector过滤器输出

mobydick 
    part1 
    1 
    2 
    part2 
    1 
    2 
    part3 
    1 
    2 

凡和是类partx文字的卡盘。我

java -cp /usr/share/java/weka-3.6.6.jar weka.core.converters.TextDirectoryLoader -dir mobydick > moby.arff 

负载的数据我应用过滤器StringToWordVector用默认设置,并保存输出。

我有一个regatrding输出的问题。输出以下

... 
@attribute @@[email protected]@ {part3,part1,part2} 
... 
@data 
{1 1,6 1,10 1...82 1,83 1} 
{2 1,3 1,4 1...84 1,85 1} 
{0 part1,12 1,23 1,...134 1,137 1} 
{0 part1,23 1,26 1,...135 1,136 1} 
{0 part2,12 1,17 1,...219 1,220 1} 
{0 part2,12 1,21 1,...214 1,215 1} 

非常奇怪的输出,由于某种原因,秧鸡放置标签为载体,我希望看到类似{}标签。另外,weka并没有将label3放在vector中,显然它是多余的,但是为了简单起见,最好将它放在那里。

所以,在这里我看到有很多技巧,我的问题是什么原因这样做,如果这是正确的,也许我的输出是我与weka错误操纵的结果。

回答

1

您的操作是正确的,但您的期望与WEKA格式数据集的方式不同。

该类是属性,这是要预测的属性,所以它存在于向量中。由于您应用过滤器的方式,这是第一个属性。

输出格式很稀疏,这意味着您可以为那些非零值的属性索引和值获得一对。但是,对于名义属性(因为该类存在此问题),您将获得索引和值,该值与默认值不同(默认值是第一个),在这种情况下为第一个值 - part3。由于班级是第一个属性(索引0),因此您得到0 part20 part1,因为part2part1不是默认值。