您的位置:首页 > 编程语言 > Java开发

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

2015-04-10 10:42 513 查看
<pre name="code" class="java">
public class IrisUCI2LibSVM {

	static BufferedReader br = null; //read the file to bufferedreader
	static int classification = 0;   //classification number
	static FileWriter fw = null;     //put the result to file
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String 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 exists
		File 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 block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.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.

说明转换成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: