Сейчас я пытаюсь построить модель классификатора J48 (C4.5) на моих обучающих данных, используя Weka.
Сначала я делаю это, что, кажется, идет нормально:
java -Xmx10G -cp /weka/weka.jar weka.core.converters.TextDirectoryLoader -dir /home/test/cats > /home/test/cats.arff
Кажется, это тоже нормально:
java -Xmx10G -cp /weka/weka.jar weka.filters.unsupervised.attribute.StringToWordVector -i /home/test/cats.arff -o /home/test/cats-vector.arff
Это не идет нормально:
java -Xmx10G -cp /weka/weka.jar weka.classifiers.trees.J48 -t /home/test/cats-vector.arff -d /home/test/cats.model
Это дает следующую ошибку:
weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.j48.C45Prune ableClassifierTree: Cannot handle numeric class!
at weka.core.Capabilities.test(Capabilities.java:954)
at weka.core.Capabilities.test(Capabilities.java:1110)
at weka.core.Capabilities.test(Capabilities.java:1023)
at weka.core.Capabilities.testWithFail(Capabilities.java:1302)
at weka.classifiers.trees.j48.C45PruneableClassifierTree.buildClassifier (C45PruneableClassifierTree.java:116)
at weka.classifiers.trees.J48.buildClassifier(J48.java:236)
at weka.classifiers.Evaluation.evaluateModel(Evaluation.java:1076)
at weka.classifiers.Classifier.runClassifier(Classifier.java:312)
at weka.classifiers.trees.J48.main(J48.java:948)
Итак, я тогда попробовал это:
java -Xmx10G -cp /weka/weka.jar weka.classifiers.trees.J48 -t /home/test/cats.arff -d /home/test/cats.model
Что также дает ошибку:
weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.j48.C45PruneableClassifierTree: Cannot handle string attributes!
at weka.core.Capabilities.test(Capabilities.java:980)
at weka.core.Capabilities.test(Capabilities.java:869)
at weka.core.Capabilities.test(Capabilities.java:1085)
at weka.core.Capabilities.test(Capabilities.java:1023)
at weka.core.Capabilities.testWithFail(Capabilities.java:1302)
at weka.classifiers.trees.j48.C45PruneableClassifierTree.buildClassifier(C45PruneableClassifierTree.java:116)
at weka.classifiers.trees.J48.buildClassifier(J48.java:236)
at weka.classifiers.Evaluation.evaluateModel(Evaluation.java:1076)
at weka.classifiers.Classifier.runClassifier(Classifier.java:312)
at weka.classifiers.trees.J48.main(J48.java:948)
Очевидно, я как-то неправильно подготовил данные (кстати, входные данные - это текстовые файлы в подкаталогах, которые названы в соответствии с категориями, которые я хочу). Но я думал, что следую инструкциям на Weka Wiki: Weka Wiki Категоризация текстовых файлов Weka Wiki Primer
Так что я делаю неправильно? Я хотел бы использовать J48, потому что он дает высокую точность моих данных в тестах. Итак, что мне сделать с моими данными, чтобы классификатор J48 принял их? Или мне нужно использовать другой классификатор?
Пожалуйста помоги!