总结:如何生成mulan软件的.arrf和.xml文件
来源:互联网 发布:sql 查询表所有列名 编辑:程序博客网 时间:2024/05/10 05:03
到此为止,关于如何生成mulan的输入文件的方法比较零散,且有些方法不是合适大数据的情况,比如训练和测试
数据达到G级别以上。因此,次篇博客将总结出一个通用的方法,无论数据大小都可以实现。
(1)在matlab中已经有你的输入训练数据traintdata_ch和测试数据testdata_ch,都存在矩阵中。相应格式请参考
以前的博文,此处不再叙述。
(2) 采用matlab自带的命令完成矩阵到.csv文件;
csvwrite('traindata_ch.csv',traindata_ch);
csvwrite('testdata_ch.csv',testdata_ch);
(3)在eclipse中建立一个工程和一个新类 CsvToArrf.java。
配置工程的方法:
A、下载Weka的linux版本,解压;
B、右键点击CreatArff->Properties->Java Build Path->Libraries->Add Extern Jars,选择刚才解压文 件中的weka.jar和weka-src.jar这两个jar包;
C、CsvToArrf.java的内容如下:
import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import weka.core.Attribute;import weka.core.FastVector;import weka.core.Instance;import weka.core.Instances;import weka.core.converters.ArffSaver;/** * Generates a big ARFF file with different attribute types. * * @author WuQiang * <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;">Email:qiang4.wu@changhong.com</span> */public class CsvToArrf { public static void main(String[] args) throws Exception { FastVector atts; FastVector attVals; Instances data; double[] vals; int i; // 1. set up attributes atts = new FastVector(); // - numeric double num_fea=294;//the dims of a feature for (i=1;i<=num_fea;i++) <span style="white-space:pre"></span> atts.addElement(new Attribute("feature" + (i))); // - nominal ;only two {0,1} attVals = new FastVector(); attVals.addElement("0"); attVals.addElement("1"); double num_labels=5;//the number of classes for (i=1;i<=num_labels;i++) atts.addElement(new Attribute("label"+(i), attVals)); // 2. create Instances object data = new Instances("traindata_ch", atts, 0); // 3. fill with data from 。csv file String fileName="E:/methods/Eclipse/Create_Arrf/data/traindata_ch.csv"; String result=null; FileReader fileReader=null; BufferedReader bufferedReader=null; fileReader=new FileReader(fileName); bufferedReader=new BufferedReader(fileReader); // String read=null; // vals = new double[data.numAttributes()]; while ((result=bufferedReader.readLine())!=null) { String [] subAtt=result.split(","); // System.out.println(subAtt.length); vals = new double[data.numAttributes()]; for(i=0;i<num_fea;i++) { <span style="white-space:pre"></span> double d = Double.parseDouble(subAtt[i]); <span style="white-space:pre"></span> vals[i] = d; } // - nominal for(;i<num_fea+num_labels;i++) vals[i] = attVals.indexOf(subAtt[i]); // setVals(vals,data); //---- add data.add(new Instance(1.0, vals)); // data.add(new Instance(1.0, '\n')); } bufferedReader.close(); fileReader.close(); //4. output data System.out.println(data); //save to a arrf file ArffSaver saver = new ArffSaver(); saver.setInstances(data); saver.setFile(new File("./data/traindata_ch.arff")); // saver.setDestination(new File("./data/test.arff")); // **not** necessary in 3.5.4 and later saver.writeBatch(); }/*private static void setVals(double[] vals, Instances data) {<span style="white-space:pre"></span>// TODO Auto-generated method stub<span style="white-space:pre"></span>data.add(new Instance(1.0, vals));<span style="white-space:pre"></span>}*/}
注意:生成traindata_ch.arrf之后,将traindata_ch.csv改为testdata_ch.csv生成testdata_ch.arrf。
(4)关于如何生.xml文件的方法,本人是在是没有找到合适的方法。如果有人找到了好的方法,希望告诉我一声。
此处,贴出一个很笨的原始生成.xml文件的方法,采用matlab语言写的。
clc;clear all;str1='<?xml version="1.0" encoding="utf-8"?>';str2='<labels xmlns="http://mulan.sourceforge.net/labels">';basestr1='<label name="';basestr2='"></label>';endlabel='</labels>';lab='label';fid=fopen('traindata_ch.xml','w');fprintf(fid,'%s\n',str1);fprintf(fid,'%s\n',str2);for i=1:num_class %num_class 是总共的类数,需要按照自己的实际需要进行修改 lab_=[basestr1 strcat(lab,num2str(i)) basestr2]; fprintf(fid,'%s\n',lab_); endfprintf(fid,'%s',endlabel);fclose(fid);到此,生成.arrf文件和.xml文件已经全部完成,其中训练数据和测试数的.xml文件是完全一样的,只是文件名不
一样巴了。接下来就是如何实验了。
此博文的代码全部经过测试,可能还是有很多的不足的地方。
————————此方法仅供参考,如有不足请指正!
- 总结:如何生成mulan软件的.arrf和.xml文件
- 通过Eclipse生成mulan软件的输入文件.arrf文件
- python脚本,完成mulan项目的输入文件生成
- 在多标签分类中,准备mulan开源软件所需要的.arff和.xml数据的方法
- Weka和Mulan的介绍和理解
- 如何打开打开xml文件的方法和软件。
- Libxml2如何生成格式化的XML文件
- XML文件的解析和生成(DOM)
- XML文件的生成和解析
- xml文件的生成和解析
- net如何生成xml文件
- xml动态文件如何生成
- 12.如何生成xml文件
- XML文件的生成
- Xml文件的生成
- 在Eclipse下,采用mulan多标签分类软件进行一个简单的测试实验
- xml反序列化时,如何生成与之对应的类文件
- XML文件和JSON文件的解析及生成
- 初步了解更新锁(U)与排它锁(X)
- 微信模拟上传
- light oj 1031 区间dp+博弈
- hadoop安全性问题
- 姐妹俩不知道有多么快乐
- 总结:如何生成mulan软件的.arrf和.xml文件
- [译]如何测试一个手机站点
- C# 多线程 异步加载 窗体
- 第一P2P收购中国典当联盟发力供应链金融模式
- PHP常用的数组操作函数大全
- java时间比较(比较年月日和比较年月日时分秒)
- Bash脚本15分钟进阶教程
- 用as3打开网页链接类
- 图片缓存之内存缓存技术LruCache,软引用