我试图在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正试图预测测试数据集中每个学生的目标。