Я понимаю, как использовать API WEKA. Сначала я загружаю arff
в программу, которая создает Instances
. Затем они будут переданы Classifier
, обученному этому набору данных. Теперь я хочу дать ему новый тестовый набор данных без метки и заставить API WEKA сообщить мне, какая метка для этого экземпляра есть или может быть. Как это делается?
Как получить результаты от WEKA
Ответы (2)
Вы используете Classifier.classifyInstance(Instance)
http://weka.sourceforge.net/doc/weka/classifiers/Classifier.html
Ваши обучающие и тестовые экземпляры должны выглядеть точно так же.
значение признака 1, значение признака 2......., значение свойства n, значение класса значение признака 1, значение признака 2 ......., значение признака n, значение класса
Когда вы применяете свою модель к своему тестовому набору, Weka не будет предоставлять вашей модели значение класса экземпляров. Скорее он спросит: «Эй, классификатор, позвольте мне посмотреть, как вы назначаете классы каждому из тестовых экземпляров, как вы узнали из обучающего набора». Затем модель классификатора назначает каждому тестовому экземпляру класс на основе того, что он узнал из обучающего набора. Затем Weka сравнивает его и предоставляет результат с точки зрения точности, отзыва, f-оценки, ROC, AUC, ошибок и т. д. Таким образом, ваш тестовый экземпляр будет иметь значения класса. Не исключайте этого. В противном случае вы получите ошибку типа «обучающий и тестовый наборы несовместимы».
Instance
. У меня есть около 100 числовых функций в одном экземпляре и один строковый символ в качестве метки или класса. Я не могу инициализировать свой экземпляр. вы видите, что конструктор Instance(double weight, double[] attrValues)
, и теперь в экземпляре classify выдается weka.core.UnassignedDatasetException
, и он говорит, что экземпляр не имеет доступа к набору данных. Я не могу добавить 101-й атрибут, то есть строковый символ, в attrValues[], так как он имеет тип double
Что я здесь делаю неправильно?
- person prometheuspk; 27.04.2012
Instance
. Это должен был сделать Instance.setData()
, и затем вы передадите объект экземпляров, с которым был обучен классификатор.
- person prometheuspk; 30.04.2012