我的问题的小样本在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
接口 对象,但是问题是:
我想知道如何创建这样的实例?
答案 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