在weka中添加一个新实例 [英] Adding a new Instance in weka
本文介绍了在weka中添加一个新实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何向我创建的现有实例对象添加新实例?
How can I add a new Instance to an existing Instances object that I created ?
这是一个例子:
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 类是一个接口,我如何创建一个实例对象?
I want to add a new instance to dataRaw. As far as I know I have to use dataRaw.add(Instance i) .... How can I create an instance object if the Instance class is an interface ?
提前致谢
推荐答案
让我们从一些亮点开始.
Let start with some highlights.
- weka 将每个实例值存储为 double[].因此,您创建 double[] instanceValue1 并向该数组添加值.
- 即使字符串也存储在这个 double[] 中.您使用以下代码添加字符串值:
instanceValue1[0] = dataRaw.attribute(0).addStringValue("这是一个字符串!");
instanceValue1[0] = dataRaw.attribute(0).addStringValue("This is a string!");
- Instance 是接口,由两个类实现,{ SparseInstance , DenseInstance}.我们使用以下代码将值数组添加到数据集:
dataRaw.add(new DenseInstance(1.0, instanceValue1));
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
--------------------------
这篇关于在weka中添加一个新实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文