【问题标题】:Unable to instantiate a Weka class in MATLAB无法在 MATLAB 中实例化 Weka 类
【发布时间】:2012-01-24 20:07:12
【问题描述】:

我正在尝试将 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 现在是一个接口,而不是我正在查看的文档中的类。所以我想我现在的问题是,我可以像上课一样实例化它吗?很抱歉最初混淆了这一点..

【问题讨论】:

  • 你如何定义N?如果你用int32(N)把它转换成整数呢?
  • 好建议,但行为仍然相同。

标签: java matlab machine-learning weka


【解决方案1】:

使用类@ 987654321,而不是Instance。它是3.6中的Interface的实施。

【讨论】:

  • 这解决了我的问题,使用 weka 3.7.6。谢谢!
【解决方案2】:

试试这个:

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

【讨论】:

    【解决方案3】:

    一个疯狂的猜测:

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

    实例(双倍权重,双[] attValues)
    Instance(实例实例)
    实例(int numAttributes)

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

    inst = Instance(int32(N));

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-25
      • 2022-01-03
      • 2012-06-30
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      相关资源
      最近更新 更多