WEKA classifyinstance и методы распределения для экземпляров

В WEKA, когда я пытаюсь отладить код с экземпляром, который должен быть классифицирован с помощью обученной модели с использованием SVM, я вижу, что сначала я попадаю в classifyInstance() для классификации тестового экземпляра, а затем этот метод вызывает метод DistributionForInstance() . Там, внутри метода DistributionForInstance(), я вижу, что мы делаем обратный вызов метода classifyinstance().

Разве это не проблема куриного яйца, когда эти два метода вызывают друг друга? Что здесь происходит?


person London guy    schedule 29.06.2012    source источник
comment
На момент написания классификатора все было ОК. Имейте в виду, что это абстрактные методы, и вы должны переопределить один из них в реализации. Если ваш классификатор возвращает распределение, то WEKA может использовать метод classifyInstance из суперкласса, чтобы выбрать только лучшее на основе распределения. Могу ошибаться, давно не касался этой темы.   -  person Rekin    schedule 29.06.2012


Ответы (2)


Комментарий Рекина правильный:

Если вы только что произошли от Classifier, вы унаследовали реализации по умолчанию classifyInstance() и distributionforinstance(). Вам нужно реализовать хотя бы один из двух, чтобы он работал.

Когда вы отлаживаете свой код, может случиться так, что отладчик каким-то образом перейдет к абстрактному классу Classifier вместо конкретной реализации SVM.

person Sentry    schedule 03.07.2012

В основном (не всегда) DistributionForInstance используется для регрессионных исследований, тогда как classifyInstance используется для классификационных исследований. Конечно, для классификации можно использовать команду «distributionForInstance», но для этого требуется еще несколько строк кода.

Я внимательно прочитал этот пост и запустил этот проект GitHub в вашей локальной среде.

person johncasey    schedule 08.08.2017