В программе расстояние евклидово (что по умолчанию). Как изменить его на Манхэттен?
Код:
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])
library(knnGarden)
, вы знаете о пакете. Я никогда не использовал его, но документация показывает существование функцииknnVCN
, которые позволяют использоватьmethod = "manhattan"
внутри вызова функции. С другой стороны, документация дляclass
ясно дает понять, что его функцияknn
предназначена строго для евклидова расстояния. - person John Coleman   schedule 29.10.2018