weka中将Instances另存为一个arff文件

 主要是这一行代码DataSink.write("/arff",data);
import weka.core.Attribute;
 import weka.core.FastVector;
 import weka.core.Instance;
 import weka.core.Instances;
 
 /**
  * Generates a little ARFF file with different attribute types.
  *
  * @author FracPete
  */
 public class AttTest {
   public static void main(String[] args) throws Exception {
     FastVector      atts;
     FastVector      attsRel;
     FastVector      attVals;
     FastVector      attValsRel;
     Instances       data;
     Instances       dataRel;
     double[]        vals;
     double[]        valsRel;
     int             i;
 
     // 1. set up attributes
     atts = new FastVector();
     // - numeric
     atts.addElement(new Attribute("att1"));
     // - nominal
     attVals = new FastVector();
     for (i = 0; i < 5; i++)
       attVals.addElement("val" + (i+1));
     atts.addElement(new Attribute("att2", attVals));
     // - string
     atts.addElement(new Attribute("att3", (FastVector) null));
     // - date
     atts.addElement(new Attribute("att4", "yyyy-MM-dd"));
     // - relational
     attsRel = new FastVector();
     // -- numeric
     attsRel.addElement(new Attribute("att5.1"));
     // -- nominal
     attValsRel = new FastVector();
     for (i = 0; i < 5; i++)
       attValsRel.addElement("val5." + (i+1));
     attsRel.addElement(new Attribute("att5.2", attValsRel));
     dataRel = new Instances("att5", attsRel, 0);
     atts.addElement(new Attribute("att5", dataRel, 0));
 
     // 2. create Instances object
     data = new Instances("MyRelation", atts, 0);
 
     // 3. fill with data
     // first instance
     vals = new double[data.numAttributes()];
     // - numeric
     vals[0] = Math.PI;
     // - nominal
     vals[1] = attVals.indexOf("val3");
     // - string
     vals[2] = data.attribute(2).addStringValue("This is a string!");
     // - date
     vals[3] = data.attribute(3).parseDate("2001-11-09");
     // - relational
     dataRel = new Instances(data.attribute(4).relation(), 0);
     // -- first instance
     valsRel = new double[2];
     valsRel[0] = Math.PI + 1;
     valsRel[1] = attValsRel.indexOf("val5.3");
     dataRel.add(new Instance(1.0, valsRel));
     // -- second instance
     valsRel = new double[2];
     valsRel[0] = Math.PI + 2;
     valsRel[1] = attValsRel.indexOf("val5.2");
     dataRel.add(new Instance(1.0, valsRel));
     vals[4] = data.attribute(4).addRelation(dataRel);
     // add
     data.add(new Instance(1.0, vals));
 
     // second instance
     vals = new double[data.numAttributes()];  // important: needs NEW array!
     // - numeric
     vals[0] = Math.E;
     // - nominal
     vals[1] = attVals.indexOf("val1");
     // - string
     vals[2] = data.attribute(2).addStringValue("And another one!");
     // - date
     vals[3] = data.attribute(3).parseDate("2000-12-01");
     // - relational
     dataRel = new Instances(data.attribute(4).relation(), 0);
     // -- first instance
     valsRel = new double[2];
     valsRel[0] = Math.E + 1;
     valsRel[1] = attValsRel.indexOf("val5.4");
     dataRel.add(new Instance(1.0, valsRel));
     // -- second instance
     valsRel = new double[2];
     valsRel[0] = Math.E + 2;
     valsRel[1] = attValsRel.indexOf("val5.1");
     dataRel.add(new Instance(1.0, valsRel));
     vals[4] = data.attribute(4).addRelation(dataRel);
     // add
     data.add(new Instance(1.0, vals));
 
     // 4. output data
     System.out.println(data);
   }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值