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);
}