使用R从头开始编写KNN的错误

时间:2017-12-08 18:23:26

标签: r knn euclidean-distance

我试图在R中从零开始创建knn公式。这是我到目前为止的代码......

train.df <- read.csv("SchoolkidsTrain.csv", header = TRUE, sep = ',')

test.df <- read.csv("SchoolkidsTest.csv", header = TRUE, sep = ',')

train <- train.df

test <- test.df

normalize <- function(x){

  return((x-min(x))/(max(x)-min(x)))

}

distance <- function(a,b){

  d = 0

  for(i in c(1:length(a)-1)){

    d = d + (a[[i]]-b[[i]])^2

  }

  d = sqrt(d)

  return(d)
}

knn <- function(test_d, train_d, k){

  prediction <- c()

  for(i in c(1:nrow(test_d))){

    dist = c()

    char = c()

    yes = 0

    no = 0

    for(j in c(1:nrow(train_d))){

      dist <- c(dist, distance(test_d[i,], train_d[j,]))
    }


  }

}

每次运行程序时,我都会在RStudio中获得以下输出:

  

normalize&lt; - function(x){   + return((x-min(x))/(max(x)-min(x)))   +}   我不确定这意味着什么,但我觉得我的代码有问题。数据集的样本可以在下面看到。

性别等级年龄类型等级体育看起来钱目标 男孩5 11农村1 2 4 3体育 男孩5 10农村2 1 4 3受欢迎 女孩5 11农村4 3 1 2热门

knn正试图预测测试数据集中每个学生的目标。

0 个答案:

没有答案