Я сейчас пытаюсь построить модель классификатора 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 принял их? Или мне нужно использовать другой классификатор?
Пожалуйста, помогите!