Невозможно создать экземпляр класса Weka в MATLAB - PullRequest
3 голосов
/ 21 декабря 2011

Я пытаюсь преобразовать данные X в MATLAB в класс Weka Instance.Я использую Weka 3.7.5 и MATLAB 7.10 (2010a).

Я пробовал следующее:

javaaddpath([WEKA_HOME 'weka.jar']);
import weka.core.*;

N = 3;
inst = Instance( N );

И я получаю сообщение об ошибке

??? No constructor 'weka.core.Instance' with matching signature found. 

Когда я набираю which Instance, он может найти этот класс,Кроме того, эта форма конструктора согласуется с документированной здесь .

Я неопытен в вызове Java из MATLAB, так что, скорее всего, я здесь упускаю что-то простое.Спасибо!

Обновления:

  1. Пробовал приводить N к int32, но не повезло, все та же ошибка.

  2. Iпопробовал это с более старой версией Weka (версия 3.5.8), и это сработало.Хотя не могу объяснить, почему.

  3. Я нашел обновленную документацию : которая говорит мне, что Instance теперь интерфейс, а не класс, как это было вдокументация, на которую я смотрел.Итак, я думаю, что мой вопрос сейчас, могу ли я создать это как класс?Извините, что запутал это изначально ..

Ответы [ 3 ]

3 голосов
/ 05 мая 2012

Используйте класс DenseInstance вместо Instance.Это реализация Interface в 3.6.

0 голосов
/ 21 декабря 2011

Попробуйте это:

inst = javaObject('weka.core.Instance', N);
0 голосов
/ 21 декабря 2011

Дикая догадка:

Wekas ​​API предполагает, что есть 3 конструктора:

Экземпляр (двойной вес, двойной [] attValues)
Экземпляр (экземпляр Instance)
Экземпляр (int numAttributes)

Поэтому, если вы используете последний, сначала приведите 3 к int32, например:

inst = Instance (int32 (N));

Честно говоря, я не проверял это, поэтому я не уверен в 100%

Обновление: (после редактирования вопроса) Вы не можете создать экземпляр интерфейса!Интерфейс похож на контракт в SE между пользователем и программистом.Это не конкретная реализация

...