省略了Weka StringToWordVector属性

问题描述 投票:0回答:1

我正在和Weka一起工作。我的问题是,使用StringToWordVector后会省略一些属性。所以这是我的代码:

这是使用任何过滤器之前的ARFF文件:

@relation QueryResult

@attribute class {Qualität,Bord,Kite,Harness}
@attribute text {evo,foil,end,fin,edg}

@data
Qualität,evo
Bord,foil
Kite,end
Harness,fin
Qualität,edg 

这是我的java代码:

 Instances train = new Instances(loadInstancesForWeka("root","",sqlCommand));
 train.setClassIndex(train.numAttributes() - 2);
 System.out.println(train);

 NominalToString filter1 = new NominalToString();
 filter1.setInputFormat(train);
 train = Filter.useFilter(train, filter1);
 System.out.println("\nSelect nach NominaltoString \n"+train); 

 //filter
 StringToWordVector filter = new StringToWordVector(); 
 filter.setInputFormat(train);
 train = Filter.useFilter(train, filter);

使用Vector后,它看起来像这样:

@relation 'QueryResult-weka.filters.unsupervised.attribute.NominalToString-Clast-weka.filters.unsupervised.attribute.StringToWordVector-R2-W1000-prune-rate-1.0-N0-stemmerweka.core.stemmers.NullStemmer-stopwords-handlerweka.core.stopwords.Null-M1-tokenizerweka.core.tokenizers.WordTokenizer -delimiters \" \\r\\n\\t.,;:\\\'\\\"()?!\"'

@attribute class {Qualität,Bord,Kite,Harness}
@attribute edg numeric
@attribute evo numeric
@attribute foil numeric
@attribute end numeric
@attribute fin numeric

@data
{2 1}
{0 Bord,3 1}
{0 Kite,4 1}
{0 Harness,5 1}
{1 1} 

那么为什么省略“箔,末端,翅片”的属性呢?谢谢您的帮助。

weka
1个回答
0
投票

输出中没有遗漏任何属性。输出在sparse ARFF format

稀疏ARFF文件与ARFF文件非常相似,但未明确表示值为0的数据。 ...

每个实例都用大括号括起来,每个条目的格式为: [index] [space] [value]其中index是属性索引(从0开始)。

所以对于你的例子中的第三个例子,

{0 Kite,4 1}

表示此实例的属性0是Kite,属性4(即'end')是1,其他属性是0

StringToWordVector产生稀疏输出是有意义的,因为它创建了许多新属性,其中大多数属性为0。如果您需要非稀疏版本,可以使用weka.filters.unsupervised.instance.SparseToNonSparse

© www.soinside.com 2019 - 2024. All rights reserved.