JAVA-ML(机器学习第一天)[Dataset 和 Instance]

Java机器学习库ML官网:http://java-ml.sourceforge.net/
对于一个机器学习库来说,最基础就是数据处理能力,ml库给了dataset和instance两个类,dataset是矩阵,instance是行(可以理解是一个list,或一个double数组)。Dataset是JAVA-ML数据集合,所有的算法都是基于这个数据集,所以很基础也很重要,我觉得使用JAVA的好处就在于数据格式的规范化,以及它的灵活性,和可扩展性。
本文给出最基本的Dataset和Instance操作,可以完成对一个矩阵的遍历,定位到每一行里的每一个列,可惜的是dataset本身好像不具备行列切片,这个和python里面的pandas库差别就大了。但是对于熟悉JAVA的人来说,遍历DataSet还是不成问题的。
参考代码如下:

package com.gddx;  

import java.io.File;  
import java.io.IOException;  

import net.sf.javaml.core.Dataset;  
import net.sf.javaml.core.DefaultDataset;  
import net.sf.javaml.core.DenseInstance;  
import net.sf.javaml.core.Instance;  
import net.sf.javaml.core.SparseInstance;  
import net.sf.javaml.tools.InstanceTools;  
import net.sf.javaml.tools.data.FileHandler;  

public class TutorialDataset {  

   public static void main(String[]args) throws IOException{  
        //dataset  
        //创建一个空的dataset,并随机赋值  
        Dataset data = new DefaultDataset();  
        for (int i = 0; i < 5; i++) {  
            Instance tmpInstance = InstanceTools.randomGaussianInstance(3);  
            tmpInstance.setClassValue("标记");  
            data.add(tmpInstance);  
        }//创建一个53列的矩阵  
        System.out.println(data.instance(0)); //打印dataset的第一行  
        /*案例2*/  
        //从文件中导入形成一个dataset,前4列是特征值,最后1列是标记,列分隔符是逗号  
        Dataset dataFile = FileHandler.loadDataset(new File("D:\\tmp\\iris.data"), 4, ",");  
        for(Instance inst:dataFile){  
            System.out.println(inst.classValue());//显示标记  
            System.out.println(inst.values());//显示特征值  
        }  
        //instance        
        double[] values = new double[] { 0.1, 2, 3 };/* values of the attributes. */  
        Instance instance = new DenseInstance(values);  
        System.out.println("Instance with only values set: ");  
        System.out.println(instance);  
        Instance instanceWithClassValue = new DenseInstance(values, 1);  
        System.out.println("Instance with class value set to 1: ");  
        System.out.println(instanceWithClassValue);  
        /* Create instance with 10 attributes */  
        Instance instancesparse = new SparseInstance();  
        /* Set the values for particular attributes */  
        instancesparse.put(1, 1.0);  
        instancesparse.put(2, 2.0);  
        instancesparse.put(3, 4.0);  
        System.out.println(instancesparse.values());  
   }      
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值