将UCI的Iris Data转换成LIBSVM格式(Java)

来源:互联网 发布:下单系统源码 编辑:程序博客网 时间:2024/05/05 20:32

<pre name="code" class="java">public class IrisUCI2LibSVM {static BufferedReader br = null; //read the file to bufferedreaderstatic int classification = 0;   //classification numberstatic FileWriter fw = null;     //put the result to filepublic static void main(String[] args) {// TODO Auto-generated method stubString sourceFileName = "iris.data.set.txt"; String destFileName = "iris.libsvm.txt";uci2Libsvm(sourceFileName, destFileName);}public static void uci2Libsvm(String sourceFileName,String destFileName){String strline = null;//whether the file is existsFile file = new File(sourceFileName);if(!file.exists()){System.out.println("file not exists!");return;}try {br = new BufferedReader(new FileReader(sourceFileName));fw = new FileWriter(destFileName);int i = 1;   //the index of the libsvm format file while((strline = br.readLine().trim()) != null){String[] elements = strline.split(",");if(elements.length < 4){break;}if(elements[4].equals("Iris-setosa")){classification = 1;}else if(elements[4].equals("Iris-versicolor")){classification = 2;}else if(elements[4].equals("Iris-virginica")){classification = 3;}String result = classification + " " + i++ + ":" + elements[0]                                + " " + i++ + ":" + elements[1]                               + " " + i++ + ":" + elements[2]                               + " " + i + ":" + elements[3];i = 1;System.out.println(result);fw.write(result.trim() + "\n");   }fw.close();br.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{}System.out.println("succeed!");}}


如何验证是否转换正确呢?

使用libsvm自带的格式检查checkdata.py(libsvm-3.20\tools\checkdata.py)进行验证,该文件是用Python写的,所以验证的前提是你的电脑上首先安装Python。

D:\Python27>python d:\libsvm-3.20\tools\checkdata.py d:\libsvm-3.20\tools\iris.libsvm.txt

No error.

说明转换成功!

0 0
原创粉丝点击