Атрибуты Weka StringToWordVector опущены - PullRequest
0 голосов
/ 31 августа 2018

Я работаю с 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} 

Так почему же атрибуты "foil, end, fin" опущены? Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 03 сентября 2018

Нет никаких атрибутов, опущенных в вашем выводе. Вывод в формате разреженный ARFF :

Разреженные файлы ARFF очень похожи на файлы ARFF, но данные со значением 0 явно не представлены. ...

Каждый экземпляр окружен фигурные скобки, и формат для каждой записи:
[index] [space] [value] где index - индекс атрибута (начиная с 0).

Итак, для третьего примера в вашем примере,

{0 Kite,4 1}

означает, что атрибут 0 для этого экземпляра равен Kite, атрибут 4 (то есть «конец») равен 1, а остальные атрибуты 0.

Имеет смысл для StringToWordVector производить разреженный вывод, поскольку он создает много новых атрибутов, большинство из которых будет 0 для каждого экземпляра. Если вам нужна не разреженная версия, вы можете использовать weka.filters.unsupervised.instance.SparseToNonSparse.

...