2012-04-20 5 views
0

Я понимаю, как использовать API WEKA. Сначала я загружаю arff в программу, которая создает Instances. Затем они будут присвоены Classifier, прошедшим обучение по этому набору данных. Теперь я хочу дать ему новый тестовый набор данных без ярлыка и сделать WEKA API сказать мне, что такое ярлык для этого экземпляра. Как это делается?Как получить результаты от WEKA

ответ

2

используется Classifier.classifyInstance (Instance)

http://weka.sourceforge.net/doc/weka/classifiers/Classifier.html

+0

Что это за двойное значение, возвращаемое методом? Является ли это показателем класса? – prometheuspk

+0

@ Prometheus87 Classifier.classifyInstance (Instance) возвращает двойной, который соответствует экземпляру Instance.classValue (внутреннему представлению класса). Здесь есть хороший учебник: http://weka.wikispaces.com/Use+WEKA+in+your+Java+code – daveb

0

тренировки и тестовые примеры должны выглядеть точно так же.

значение признака 1, значение признака 2 ......., значение признака п, значение класса функция значение 1, значение признака 2 ......., значение признака п, значение класса

Когда вы применяете свою модель на своем тестовом наборе, Weka не предоставит вашей модели значение класса экземпляров. Скорее он спросит: «Эй, классификатор, позвольте мне посмотреть, как вы назначаете классы для каждого из тестовых экземпляров, как вы узнали из набора тренировок». Затем модель классификатора присваивает каждому тестовому экземпляру класс из того, что он узнал из набора тренировок. Затем Weka сравнивает его и дает результат с точки зрения точности, отзыва, f-оценки, ROC, AUC, ошибок и т. Д. Таким образом, ваш тестовый экземпляр будет иметь значения класса. Не исключайте этого. В противном случае вы получите сообщение об ошибке, например, «учебные и тестовые наборы несовместимы».

+0

привет. Я подготовил свой классификатор, но теперь передача «Экземпляра» является проблемой. У меня есть 100 числовых функций в одном экземпляре и один строковый символ как метка или класс. Я не могу инициализировать свой экземпляр. вы видите, что конструктор - это «Экземпляр (двойной вес, double [] attrValues)», и теперь в экземпляр классификации вызывается 'weka.core.UnassignedDatasetException', и он говорит, что экземпляр не имеет доступа к набору данных. Я не могу добавить 101-й attr, т. Е. Строковый символ в attrValues ​​[], поскольку он имеет тип 'double'. Что я здесь делаю неправильно? – prometheuspk

+0

проблема заключалась в том, что я не назначал никаких данных о новом «экземпляре». Это нужно сделать с помощью 'Instance.setData()', после чего вы передадите объект Instances, с которым был подготовлен классификатор – prometheuspk

Смежные вопросы