2016-08-09 1 views
0

Это мои данные.Нельзя обрабатывать числовые классы! несмотря на отсутствие числового класса в данных

@Relation tagging 

@ATTRIBUTE word STRING 
@ATTRIBUTE postag STRING 
@ATTRIBUTE ctag STRING 
@ATTRIBUTE class STRING 

@DATA 
routing, NN, I-NP, P 
is, VBZ, B-VP, N 
a, DT, B-NP, N 
crucial, JJ, I-NP, N 
product, NN, I-NP, N 
., ., O, N 

и все же я получаю сообщение об ошибке сказав

weka.core.UnsupportedAttributeTypeException: weka.classifiers.bayes.NaiveBayesMultinomial: Не может обрабатывать числовую класса!

, когда я пытаюсь построить классификатор

Какой числовой класс это говорите?

+0

Возможно, это просто занимает '-' как минус? Или '.' как 0.0? –

+0

Но ему был присвоен тип данных String! – zoozoofreak

ответ

0

Прежде чем классифицировать, примените фильтр невосстановленных атрибутов «StringToNominal» по последнему атрибуту.

Кстати, может быть, «класс» - не такое хорошее имя атрибута.

+0

Если я сделаю последний атрибут номинальным в самих данных, это поможет? Или это нужно сделать с помощью фильтра? – zoozoofreak

+0

Ах, неважно, я получил его на работу, спасибо! – zoozoofreak

0

Я использовал StringToWordVector фильтр, чтобы решить эту проблему,

StringToWordVector stwv = new StringToWordVector(); 
stwv.setInputFormat(data); 
try { 
    fsource = Filter.useFilter(data, stwv); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

применяя его к экземплярам (данных) после того, как я указано, какой атрибут будет класс, используя

data.setClassIndex(data.numAttributes() - 1); 

(И я изменил имя последнего атрибута) Спасибо, @knb, что было хорошим советом.