java-ml机器学习库(一)

java-ml是基于java的一个机器学习jar,下载地址:http://java-ml.sourceforge.net/

导入jar包后就可以开始code了,Eclipse引入外部包的教程:http://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html。

首先说明如何创建一个样本:

 

如何创建一个数据集:

import net.sf.javaml.core.Dataset;
import net.sf.javaml.core.DefaultDataset;
import net.sf.javaml.core.Instance;
import net.sf.javaml.tools.InstanceTools;

public class text {
     public static void main(String[]args){
            Dataset data = new DefaultDataset();
            for (int i = 0; i < 10; i++) {
                Instance tmpInstance = InstanceTools.randomInstance(4);//每个样本包括四个属性值,属性值为0-1之间的随机数
                for(int j=0;j<tmpInstance.size();++j){  //遍历输出每个样本的所有属性值
                    System.out.print(tmpInstance.value(j));
                }
                System.out.println();
                data.add(tmpInstance);//将当前样本添加到数据集中
            }            
            System.out.println(data.noAttributes());//输出数据集中样本的属性数
            System.out.println(data.size()); //输出样本的个数
            /* Retrieve all class values that are ever used in the data set */
            SortedSet<Object> classValues = data.classes();
            System.out.println(classValues.size());

        }
}

 

如何从文件中读取一个数据集:

 public static void main(String[]args) throws IOException{
         //Iris数据集格式如下如下:
        /*
        5.1,3.5,1.4,0.2,Iris-setosa
        4.9,3.0,1.4,0.2,Iris-setosa
        4.7,3.2,1.3,0.2,Iris-setosa
        4.6,3.1,1.5,0.2,Iris-setosa
        */
        //FileHandler.loadDataset
        //第一个参数:文件来源
        //第二个参数:样本的标签的位置,从0开始,在该样品中Iris-setosa处在第5个位置,因此为4
        //第三个参数:每个属性之间的分隔符
             Dataset data = FileHandler.loadDataset(new File("D:/test/Iris.csv"), 4, ",");
            System.out.println(data);
             /*输出为:
            [{[5.1, 3.5, 1.4, 0.2];Iris-setosa}, {[4.9, 3.0, 1.4, 0.2];Iris-setosa}, {[4.7, 3.2, 1.3, 0.2];Iris-setosa}, {[4.6, 3.1, 1.5, 0.2];Iris-setosa}]
            */
        }

样本的归一化:X=(x-min)/(max-min)

 

public static void main(String[]args) throws IOException{
         /* Create data set with random instances */
         Dataset data=new DefaultDataset();
         for(int i=0;i<2;i++){
           Instance rgA=InstanceTools.randomInstance(2);
           data.add(rgA);
         }
         NormalizeMidrange nmr=new NormalizeMidrange(0.5,1);
         /*根据数据集来计算*/
         nmr.build(data);          
         Instance rgB=InstanceTools.randomInstance(2);
         System.out.println("归一化之前:"+rgB);
         /* Filter another instances */
         nmr.filter(rgB);
         System.out.println("归一化之后:"+rgB);
         System.out.println(data);
        }

 

posted on 2017-04-14 21:53  codeDog123  阅读(3261)  评论(0编辑  收藏  举报

导航