Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得最短的';K';K-最近算法中的距离(Java)_Java_Nearest Neighbor_Knn - Fatal编程技术网

获得最短的';K';K-最近算法中的距离(Java)

获得最短的';K';K-最近算法中的距离(Java),java,nearest-neighbor,knn,Java,Nearest Neighbor,Knn,因此,目前我有以下内容,通过从具有计算距离的“距离”数组中获取最小距离值,找到最短/最近的邻居。然后它进行另一次搜索以跟踪它的索引,然后向我指出它属于哪个患者 但是如果我想找到3个最近的邻居,我会怎么做?我是否需要完全更改代码以适应这种情况 非常感谢 int min = 99; int d = 1; String diagnosis; //Finding smallest value from an array containing distance to

因此,目前我有以下内容,通过从具有计算距离的“距离”数组中获取最小距离值,找到最短/最近的邻居。然后它进行另一次搜索以跟踪它的索引,然后向我指出它属于哪个患者

但是如果我想找到3个最近的邻居,我会怎么做?我是否需要完全更改代码以适应这种情况

非常感谢

    int min = 99;
    int d = 1;
    String diagnosis;
        //Finding smallest value from an array containing distance to new 'patient'
        for(d=1; d<= numberOFinstances; d++){
            if(distance[d] < min)
            min = distance[d];
        }

        for (int p = 1; p < numberOFinstances; p++) 
        {
         if (distance[p] == min){
            System.out.println("Nearest patient to new patient is Patient "+p+ " with a distance of: " + min);
            //Here I'm saying 6 because the diagnosis is in column 6 within the matrix
            diagnosis = data[p][6];
            System.out.println("The new patient's diagnosis is: " + diagnosis);
         }
        }
intmin=99;
int d=1;
字符串诊断;
//从包含到新“患者”距离的数组中查找最小值

对于(d=1;d最好的实现方法是使用array.sort(int[])

Arrays.sort(距离);
int[]toReturn=新的int[k];
for(int i=0;i
最好的方法是使用Arrays.sort(int[])

Arrays.sort(距离);
int[]toReturn=新的int[k];
for(int i=0;i
数组的第一个元素是元素[0]。你应该习惯使用它。如何排序
距离
并使用前三个元素?如果前四个元素具有相同的距离,也许可以使用一些代码来处理关系。@ControlAltDel,谢谢你的输入。我从1开始,因为我的CSV文件在第0行有标题。@AndrewS,是的,我一直在思考这个问题对距离进行排序的行。但是我不知道如何追溯这些值。因为距离的索引与我的患者有关。数组的第一个元素是元素[0]。你应该习惯使用它。如何排序
距离
并使用前三个元素?如果前四个元素具有相同的距离,也许可以使用一些代码来处理关系。@ControlAltDel,谢谢你的输入。我从1开始,因为我的CSV文件在第0行有标题。@AndrewS,是的,我一直在思考这个问题对距离进行排序的行。但是,我不知道如何追溯这些值。因为距离的索引与我的患者有关。谢谢,我理解这一点。如果我确实收到了3个最小的距离,那么我如何将它们追溯到其原始索引位置?假设在sor之后,数组的顺序不再相同t、 许多thanksIt听起来像有两个不同但相关的数组-一个用于患者,一个用于距离。您需要创建一个类来保存距离和患者之间的关系。在距离属性上填充并排序该
PateintDistance
数组,它将为您提供相关患者。@AnthonyJ您可以创建一个包含距离和索引的
类,并实现
可比性
谢谢,我理解这一点。如果我确实收到了3个最小距离,那么我如何跟踪它们回到其原始索引位置?假设排序后数组的顺序不再相同。许多感谢您nds和您一样有两个不同但相关的数组-一个用于患者,一个用于距离。您需要创建一个类来保存距离和患者之间的关系。在距离属性上填充并排序该
pateintdance
数组,它将为您提供相关的患者。@AnthonyJ最好的方法是为您创建一个包含距离和索引的
类,并实现
可比较的

Arrays.sort(distance);
int[] toReturn = new int[k];
for (int i = 0; i < k; i++) {
  toReturn[i] = distance[i];
}