У меня есть файл csv только с 20 точками данных, и я хотел бы знать ближайшего соседа для новой точки данных.
Мой CSV-файл выглядит следующим образом
temp rain
79 12
81 13
79 4
61 9
60 15
45 5
34 5
100 9
101 3
59 11
58 16
Поэтому я хотел бы знать, как правильно найти ближайшего соседа для точки 65, 7, используя евклидово расстояние и KNN. Большинство доступных в сети алгоритмов используют большие наборы данных, такие как iris или German от R, но они настолько малы, что не требуют очистки, поэтому мне кажется, что эти решения слишком усложняют эту проблему. Я все еще очень плохо знаком с R, так что, возможно, я упустил решение. Спасибо, что нашли время, чтобы прочитать это!
Я попробовал следующий код, но он продолжает выдавать ошибку, опять же, я думаю, я просто слишком усложняю это
df <- read.csv("data.csv", header = FALSE, sep = ',')
head(df)
ran <- sample(1:nrow(df), 0.9 * nrow(df))
nor <-function(x) { (x -min(x))/(max(x)-min(x)) }
df_train <- df[ran,]
df_test <- df[-ran,]
##extract 5th column of train dataset because it will be used as 'cl' argument in knn function.
df_target_category <- df[ran,2]
##extract 5th column if test dataset to measure the accuracy
df_test_category <- df[-ran,2]
library(class)
pr <- knn(df_train,df_test,cl=df_target_category,k=13)
##create confusion matrix
tab <- table(pr,df_test_category)
accuracy <- function(x){sum(diag(x)/(sum(rowSums(x)))) * 100}
accuracy(tab)