0

尝试使用 iris 数据集在 KNN 上仅在前 4 列上复制此示例。我掌握的信息是 N=150 和 D=4。我们使用 k=4,即找到 4 个最近的邻居。例如,我们发现样本 23 的 4NN 是 7 3 38 41,即样本 7 最接近样本 23,样本 3 最接近样本 3,以此类推。

我使用的公式是首先计算欧几里得距离然后使用公式。问题是我无法得到与示例相同的答案。

这是公式

ED<-function(data1,data2){distance=0
for(i in (1:(length(data1)-1))){
distance=distance+(data1[i]-data2[i])^2
}
return(sqrt(distance))
}

iris.data<-iris
x<-data.frame()
for(j in c(1:nrow(iris.data))){
x<-rbind(x,ED(iris.data[1,],iris.data[j]))}
x

测试样本 23 看我是否得到与我使用的相同的结果

x<-data.frame()
for(j in c(23:nrow(iris.data))){
x<-rbind(x,ED(iris.data[1,],iris.data[j]))}
x

根据这个例子,我应该得到的是: -

Example
23 = 0.6480741

7 = 0.5196152
3 = 0.5099020
38 = 0.2449490
41 = 0.173205123

当我将 1 替换为 23 时,我得到了什么,因为 NROW 是

    Sepal.Length
1      0.6480741
2      0.4690416
3      0.5916080
4      0.5477226
5      0.3162278

谁能告诉我哪里出错了?

4

0 回答 0