在 weka 中创建空数据集时出现构造函数错误
Constructor error while creating an empty dataset in weka
我正在尝试使用 Matlab 环境使用 classifyInstance 方法(在 weka 的文档 here 中描述)对实例进行分类。
此方法要求实例 link 到数据集。我正在尝试使用 this constructor 通过以下 matlab 代码创建一个空数据集:
import java.util.ArrayList.*;
import weka.core.*;
import weka.core.Instances.*;
attInfo = java.util.ArrayList;
attInfo.add(weka.core.Attribute('att1'));
attInfo.add(weka.core.Attribute('att2'));
attInfo.add(weka.core.Attribute('att3'));
dataset= weka.core.Instances(java.lang.String('relation'), attInfo, 2);
当我尝试 运行 此代码 matlab return 我出现以下错误:
No constructor 'weka.core.Instances' with matching signature found.
Error in file_name (line 109) dataset =
weka.core.Instances(java.lang.String('relation'), attInfo, 5);
我的构造函数的参数有什么问题?
我最终找到了问题的解决方案。构造函数接受使用已弃用的 class FastVector 的签名。我刚刚添加了我的代码的快照,以防它可能对某人有所帮助。
attInfo = FastVector();
attInfo.addElement(weka.core.Attribute('att1'));
attInfo.addElement(weka.core.Attribute('att2'));
attInfo.addElement(weka.core.Attribute('att3'));
% build the class attribute
classValues = FastVector();
classValues.addElement(java.lang.String('0'));
classValues.addElement(java.lang.String('1'));
attInfo.addElement(Attribute('Class', classValues));
% create the dataset and define the class attribute
dataset = Instances('relation', attInfo, 1);
dataset.setClassIndex(dataset.numAttributes() -1);
% build the instance
Inst = weka.core.Instance(10);
for ii = 1:D.numAttributes()
Inst.setValue(D.attribute(ii-1), 1)
end
Inst.setDataset(dataset)
% classify the instance
classifier.classifyInstance(Inst)
使用java对象如java.lang.String()
也会导致错误。
我仍然很好奇为什么会这样,但我怀疑这可能是因为我使用的 weka 版本 (3.6.11),其中文档可能是 3.7.12 版本。
我正在尝试使用 Matlab 环境使用 classifyInstance 方法(在 weka 的文档 here 中描述)对实例进行分类。
此方法要求实例 link 到数据集。我正在尝试使用 this constructor 通过以下 matlab 代码创建一个空数据集:
import java.util.ArrayList.*;
import weka.core.*;
import weka.core.Instances.*;
attInfo = java.util.ArrayList;
attInfo.add(weka.core.Attribute('att1'));
attInfo.add(weka.core.Attribute('att2'));
attInfo.add(weka.core.Attribute('att3'));
dataset= weka.core.Instances(java.lang.String('relation'), attInfo, 2);
当我尝试 运行 此代码 matlab return 我出现以下错误:
No constructor 'weka.core.Instances' with matching signature found.
Error in file_name (line 109) dataset = weka.core.Instances(java.lang.String('relation'), attInfo, 5);
我的构造函数的参数有什么问题?
我最终找到了问题的解决方案。构造函数接受使用已弃用的 class FastVector 的签名。我刚刚添加了我的代码的快照,以防它可能对某人有所帮助。
attInfo = FastVector();
attInfo.addElement(weka.core.Attribute('att1'));
attInfo.addElement(weka.core.Attribute('att2'));
attInfo.addElement(weka.core.Attribute('att3'));
% build the class attribute
classValues = FastVector();
classValues.addElement(java.lang.String('0'));
classValues.addElement(java.lang.String('1'));
attInfo.addElement(Attribute('Class', classValues));
% create the dataset and define the class attribute
dataset = Instances('relation', attInfo, 1);
dataset.setClassIndex(dataset.numAttributes() -1);
% build the instance
Inst = weka.core.Instance(10);
for ii = 1:D.numAttributes()
Inst.setValue(D.attribute(ii-1), 1)
end
Inst.setDataset(dataset)
% classify the instance
classifier.classifyInstance(Inst)
使用java对象如java.lang.String()
也会导致错误。
我仍然很好奇为什么会这样,但我怀疑这可能是因为我使用的 weka 版本 (3.6.11),其中文档可能是 3.7.12 版本。