当前位置: 首页 > 面试题库 >

在weka中添加新实例

慕飞章
2023-03-14
问题内容

如何将新实例添加到我创建的现有Instances对象中?

这是一个例子:

ArrayList<Attribute> atts = new ArrayList<Attribute>(2);
ArrayList<String> classVal = new ArrayList<String>();
classVal.add("A");
classVal.add("B");
atts.add(new Attribute("content",(ArrayList<String>)null));
atts.add(new Attribute("@@class@@",classVal));

Instances dataRaw = new Instances("TestInstances",atts,0);

我想向dataRaw添加一个新实例。据我所知,我必须使用dataRaw.add(Instance
i)....如果Instance类是一个接口,如何创建一个实例对象

提前致谢


问题答案:

让我们从一些亮点开始。

  • weka将每个实例值存储为double []。因此,您创建double [] instanceValue1并将值添加到此数组。
  • 偶数字符串也存储在此double []中。您可以使用以下代码添加字符串值:

instanceValue1 [0] = dataRaw.attribute(0).addStringValue(“这是一个字符串!”);

  • 实例是接口,由两个类{SparseInstance,DenseInstance}实现。我们使用以下代码将值数组添加到数据集中:

dataRaw.add(new DenseInstance(1.0,instanceValue1));

这是完整的运行示例:

import java.util.ArrayList;

import weka.core.Attribute;
import weka.core.DenseInstance;
import weka.core.Instance;
import weka.core.Instances;

public class Program {
    public static void main(String[] args) {
        ArrayList<Attribute> atts = new ArrayList<Attribute>(2);
        ArrayList<String> classVal = new ArrayList<String>();
        classVal.add("A");
        classVal.add("B");
        atts.add(new Attribute("content",(ArrayList<String>)null));
        atts.add(new Attribute("@@class@@",classVal));

        Instances dataRaw = new Instances("TestInstances",atts,0);
        System.out.println("Before adding any instance");
        System.out.println("--------------------------");
        System.out.println(dataRaw);
        System.out.println("--------------------------");

        double[] instanceValue1 = new double[dataRaw.numAttributes()];

        instanceValue1[0] = dataRaw.attribute(0).addStringValue("This is a string!");
        instanceValue1[1] = 0;

        dataRaw.add(new DenseInstance(1.0, instanceValue1));

        System.out.println("After adding a instance");
        System.out.println("--------------------------");
        System.out.println(dataRaw);
        System.out.println("--------------------------");

        double[] instanceValue2 = new double[dataRaw.numAttributes()];

        instanceValue2[0] = dataRaw.attribute(0).addStringValue("This is second string!");
        instanceValue2[1] = 1;

        dataRaw.add(new DenseInstance(1.0, instanceValue2));

        System.out.println("After adding second instance");
        System.out.println("--------------------------");
        System.out.println(dataRaw);
        System.out.println("--------------------------");


    }

}

其输出如下:

Before adding any instance
--------------------------
@relation TestInstances

@attribute content string
@attribute @@class@@ {A,B}

@data

--------------------------
After adding a instance
--------------------------
@relation TestInstances

@attribute content string
@attribute @@class@@ {A,B}

@data
'This is a string!',A
--------------------------
After adding second instance
--------------------------
@relation TestInstances

@attribute content string
@attribute @@class@@ {A,B}

@data
'This is a string!',A
'This is second string!',B
--------------------------


 类似资料:
  • 问题内容: 我有一些arff文件。我想顺序阅读它们并创建一个大数据集。Instances.add(Instance inst)不会将字符串值添加到实例,因此尝试setDataset()…但即使失败。有没有办法完成直观上正确的字符串操作? 问题答案: 这是从邮件列表。我以前保存过 如何将两个数据文件a.arff和b.arff合并到一个数据列表中? 取决于您在说什么合并。您是否只想追加第二个文件(两个

  • 问题内容: weka是否要求测试实例具有class属性。我已经使用了一个训练集arff文件来训练分类器。现在,我想测试一个没有class属性的实例(不是从arf​​f文件,必须通过代码创建)并预测该类。我找到了此链接。Weka:如何在Java中获得测试实例的预测值? 但是我的课程属性是字符串“ Y”或“ N”。如果valuateModelOnce()返回double,那是什么意思。是class属性

  • 问题内容: 我正在尝试将更多实例添加到我的训练集中,并执行10倍交叉验证。 我的实例为String格式,因此我使用StringToWordVector过滤器将其转换为数字。如果我不添加我想要的多余页面,事情将会很好。但是当我添加命令并传递到过滤器时,我在第一次迭代中遇到了一个奇怪的问题 尝试使用过滤器时出现以下错误: 有什么事吗 问题答案: 经过一番搜索,我意识到该功能有问题。我能想到的一个原因是

  • 要在DOMPdf中添加新字体Arvo,请更新文件DOMPdf\u font\u family\u cache.dist并添加以下代码- 我在lib/font目录中包含了字体文件,我在html中添加了样式表- 但新字体不会添加到结果pdf中。请帮我解决这个问题。

  • 问题内容: TL; DR:如何在ModelForm中为ForeignKey添加“添加新”按钮? 长版:我在项目中使用Django 1.7。我的models.py中有这两个模型 [省略了一些其他不相关的字段] 我正在使用ModelForm用新命令填充数据库,如下所示: Django在为客户字段添加下拉菜单方面做得很好,并在其中添加了来自客户的条目。不过,我想拥有一个“添加新客户”链接/按钮/以便在添

  • 我正在尝试使用线性回归解决WEKA中数字属性的数字分类问题,然后我想在现有数据集上测试我的模型,并在当前测试数据集上重新评估模型。 作为评估的结果,我得到了总结: 相关系数0.9924平均绝对误差1.1017均方根误差1.2445实例总数17 但我没有这里显示的结果:http://weka.wikispaces.com/Making预言 如何让WEKA达到我需要的结果? 非常感谢。 要回答我的问题