我的问题的示例可以在repo中找到。
我在.data
文件中有以下数据集:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,Action0,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
来预测最后一列。
我已经根据这个链接成功训练了我的模型。
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
基于代码,我需要从net.sf.javaml.core.Instance
中创建一个Instance
接口的对象,但问题是:
我想知道如何创建这样的实例?
回答:
你可以简单地使用SparseInstance方法,它需要一个Double数组。如果你将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("结果是: "+predictedClassValue);
我在你的repo上尝试了上述代码,它给我的结果是:
结果是: Left