如何使用TestData在javaml中创建实例?

时间:2018-09-27 18:50:54

标签: java machine-learning knn

我的问题的小样本在repo中。

我在.data文件中包含以下数据集:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,Action
0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,"Up"
2,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,"Left"
4,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,"Left"
4,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,"Up"
4,4,0,0,2,0,0,0,0,0,0,0,0,0,0,2,"Up"
8,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,"Left"

数据集具有16个int特征,最后一列是String。我想使用前16个功能使用knn来预测最后一列。

我已经基于this link成功地训练了我的模型。

        knn = new KNearestNeighbors(5);
        knn.buildClassifier(data);

但是现在,我需要 测试 我的模型。因此,TestData的格式为16个整数,我期望knn模型 预测 该动作。

样本测试数据为:

4,4,0,0,2,0,0,0,0,0,0,0,0,0,0,2

基于代码,我需要具有Instance中的net.sf.javaml.core.Instance 接口 对象,但是问题是:

我想知道如何创建这样的实例?

1 个答案:

答案 0 :(得分:0)

那么您可以简单地使用SparseInstance方法,该方法需要一个Doubles数组。如果将TestData转换为Double,则将非常简单:

double[] testData = {32,16,8,2,16,8,2,2,8,2,0,0,0,0,0,0};
Instance inst=new SparseInstance(testData);
Object predictedClassValue = knn.classify(inst);
System.out.println("Result is: "+predictedClassValue);

我在您的仓库中尝试了上面的代码,它给了我

Result is: Left