package org.greenstone.mars; import weka.core.Instance; import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource; import weka.core.neighboursearch.LinearNNSearch; import weka.core.neighboursearch.NearestNeighbourSearch; //import weka.core.neighboursearch.KDTree; // Based on StackOverflow: // https://stackoverflow.com/questions/31350506/how-to-calculate-the-nearest-neighbors-using-weka-from-the-command-line public class WekaFindInstanceKNN { public static Instances loadDataset(String input_filename) { Instances instances = null; try { DataSource source = new DataSource(input_filename); instances = source.getDataSet(); } catch (Exception e) { e.printStackTrace(); } return instances; } public static NearestNeighbourSearch initKNN(Instances instances) { LinearNNSearch knn = new LinearNNSearch(instances); return knn; } public static void findNearestKNN(NearestNeighbourSearch knn, Instance sample_instance, int k_nearest) { try { Instances nearest_instances= knn.kNearestNeighbours(sample_instance, k_nearest); //cycle through the instances and printout the nearestneighbors System.out.println("\n" + sample_instance); for(int i =0; i