Скажем, у меня есть кадр данных, который выглядит следующим образом:
Feature 1 Feature 2 Feature 3 Feature 4 Target
1 1 1 1 a
0 1 0 0 a
0 1 1 1 b
И вектор, который выглядит так:
0, 1, 1, 1
Как мне найти индексы ближайших совпадающих строк к вектору? Например, если бы я хотел найти 2 самые близкие строки, я бы ввел вектор и фрейм данных (возможно, с удаленным целевым столбцом), и я бы получил индексы 1 и 3 в качестве возврата из функции, поскольку эти строки наиболее близко напоминают вектор "0, 1, 1, 1".
Я попытался использовать пакет "caret" из R с командой:
intrain <- createDataPartition(y = data$Target, p= 0.7, list = FALSE)
training <- data[intrain,]
testing <- data[-intrain,]
trctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)
knn_fit <- train(Target~., data = training, method = "knn", trControl = trctrl, preProcess = c("center", "scale"), tuneLength = 10)
test_pred <- predict(knn_fit, newdata = testing)
print(test_pred)
Однако, это не возвращает индекс соответствующих строк. Он просто возвращает прогнозы для цели, функции которой наиболее точно соответствуют тестовому набору данных.
Я хотел бы найти модель / команду / функцию, которая может работать аналогично модели KDtrees из sklearn в python, но вместо этого в R (KDtrees может вернуть список из n ближайших индексов). Кроме того, хотя это и не обязательно, я бы хотел, чтобы указанная модель работала с категориальными значениями для объектов (например, ИСТИНА / ЛОЖЬ), чтобы мне не приходилось создавать фиктивные переменные, как я делал здесь со своими 1 и 0.