Как создать экземпляр в javaml с TestData? - PullRequest
0 голосов
/ 27 сентября 2018

Небольшой образец моей проблемы находится в репо .

У меня есть следующий набор данных в файле .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.

Я успешно обучил свою модель на основе этой ссылки .

        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 interface из net.sf.javaml.core.Instance, но проблема:

Мне интересно, как создать такой экземпляр?

1 Ответ

0 голосов
/ 30 сентября 2018

Ну, вы можете просто использовать 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("Result is: "+predictedClassValue);

Я попробовал приведенный выше код в вашем репо, и он даст мне:

Result is: Left
...