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

本文介绍了如何使用Java脚本将iris.data.set.txt转换为libsvm格式,包括读取文件、解析数据并将其写入目标文件。通过验证脚本输出与libsvm自带检查工具的匹配,确保转换过程的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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.

说明转换成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值