Как посчитать kNN с манхэттенским расстоянием в R?

В программе расстояние евклидово (что по умолчанию). Как изменить его на Манхэттен?

Код:

wdbc <- read.table(file.choose(), sep=",") 
View(wdbc) 
wdbc <- wdbc[, -1]
data_norm <- function(x) {((x - min(x))/ (max(x)- min(x)))} 
wdbc_norm <- as.data.frame(lapply(wdbc[, -1], data_norm))
summary(wdbc[,2:5]) 
summary(wdbc_norm[,1:4]) wdbc_train <- wdbc_norm[1:450,]
wdbc_test <- wdbc_norm[451:569,]
library(class)
wdbc_pred <- knn(wdbc_train, wdbc_test, wdbc[1:450, 1], k=21)
table(wdbc_pred, wdbc[451:569,1]) 
library(knnGarden)
wdbc_pred <- knn(wdbc_train, wdbc_test, wdbc[1:450, 1], k=21)
table(wdbc_pred, wdbc[451:569,1]) 

person Ernesta Petraitytė    schedule 29.10.2018    source источник
comment
Поскольку вы использовали library(knnGarden), вы знаете о пакете. Я никогда не использовал его, но документация показывает существование функции knnVCN, которые позволяют использовать method = "manhattan" внутри вызова функции. С другой стороны, документация для class ясно дает понять, что его функция knn предназначена строго для евклидова расстояния.   -  person John Coleman    schedule 29.10.2018
comment
rdocumentation.org/packages/cluster/versions/2.0. 7-1/topics/ эта функция может генерировать манхэттенское расстояние. Получите расстояние, а затем stackoverflow.com/questions/23449726/ вам поможет.   -  person abhiieor    schedule 29.10.2018