无法在MATLAB中实例化Weka类

时间:2011-12-20 22:06:01

标签: java matlab machine-learning weka

我正在尝试将MATLAB中的数据X转换为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时,它可以找到这个类。此外,这种形式的构造函数与记录的here一致。

我从没有从MATLAB调用Java的经验,所以我可能在这里缺少一些简单的东西。谢谢!

更新:

  1. 尝试将N投射到int32,但没有运气,仍然是同样的错误。

  2. 我尝试使用较旧版本的Weka(版本3.5.8)并且它有效。无法解释原因。

  3. 我发现更新了documentation:它告诉我Instance现在是一个接口,而不是像我正在查看的文档中那样的类。所以我想我现在的问题是,我可以像上课那样实例化吗?很抱歉最初混淆了..

3 个答案:

答案 0 :(得分:2)

使用课程DenseInstance代替Instance。它是3.6中Interface的实现。

答案 1 :(得分:0)

疯狂猜测:

Wekas API建议有3个构造函数:

  

实例(double weight,double [] attValues)
  实例(实例实例)
  实例(int numAttributes)

因此,如果您使用的是最后一个,请首先将3转换为int32,如下所示:

  

inst =实例(int32(N));

坦率地说,我没有检查过,所以我无法确定100%

更新:(以下问题编辑) 你无法实例化一个界面! 接口就像用户和程序员之间的SE合同。它不是具体的实现

答案 2 :(得分:0)

试试这个:

inst = javaObject('weka.core.Instance', N);