Я пытаюсь использовать Weka для создания файла .arff и запуска на CLUS. Но у меня проблема с атрибутом иерархии.
@attribute 'class hierarchical' {Dummy,Top/Arts/Animation,Top/Arts}
Я создаю .arff по этому Кодексу.
// 1. set up attributes
attributes = new FastVector();
// - numeric
int NumericAttSize=0;
for(String word : ListOfWord)
{
if(word.length()>1)
{
attributes.addElement(new Attribute(word));
NumericAttSize++;
}
}
// - nominal
attVals = new FastVector();
attVals.addElement("Dummy");
for (String branch : ListOfBranch)
{
attVals.addElement(branch);
}
attributes.addElement(new Attribute("class hierarchical", attVals));
// 2. create Instances object
dataSet = new Instances("training", attributes, 0);
// 3. fill with data
for(String DocID : indexTFIDF.keySet())
{
values = new double[dataSet.numAttributes()];
for(String word : ListOfWord)
{
int index = ListOfWord.indexOf(word);
if(indexTFIDF.get(DocID).containsKey(word))
values[index]=indexTFIDF.get(DocID).get(word);
}
String Branch = DocDetail.get(DocID).get("1");
values[NumericAttSize]= ListOfBranch.indexOf(Branch)+1;
dataSet.add(new Instance(1.0,values));
}
ArffSaver arffSaverInstance = new ArffSaver();
arffSaverInstance.setInstances(dataSet);
arffSaverInstance.setFile(new File("training.arff"));
arffSaverInstance.writeBatch();
затем, когда я запускаю «training.arff» в CLUS, я получаю следующее сообщение об ошибке:
Ошибка: значение классов не в древовидной иерархии: Top/Arts/Animation (поиск: Animation, термин: Top/Arts, подтермины: Animation})
Я думаю, проблема в том, как я объявляю иерархический атрибут номинальным атрибутом, но у меня нет других идей, как объявить этот атрибут.
Каждое предложение будет полезным. Заранее спасибо.