Я пытаюсь найти оптимальное значение k, используя пакет caret
для запуска алгоритма KNN.Мои данные выглядят примерно так (datanet
в коде), где "ACTIVITY_X"
, "ACTIVITY_Y"
и "ACTIVITY_Z"
являются моими предикторами, поскольку я хочу классифицировать "Event"
на основе значений из столбцов B иD. Все столбцы имеют одинаковое количество строк.
Для этого сначала нужно разделить данные для перекрестной проверки.Вот пример моего кода:
# Split the data:
indxTrain <- createDataPartition(y = datanet$ACTIVITY_X,p = 0.8,list = FALSE)
training <- datanet[indxTrain,]
testing <- datanet[-indxTrain,]
# Run k-NN:
set.seed(400)
ctrl <- trainControl(method="repeatedcv",repeats = 3)
knnFit <- train(Event ~ ., data = training, method = "knn", trControl = ctrl, preProcess = c("center","scale"),tuneLength = 20)
knnFit
#Use plots to see optimal number of clusters:
#Plotting yields Number of Neighbours Vs accuracy (based on repeated cross validation)
plot(knnFit)
У меня два вопроса:
1) Если я правильно понимаю при использовании пакета caret
, аргумент y
в createDataPartition
нуждается в аргументебыть предиктором, верно?
2) Если так, у меня есть три предиктора, как упомянуто ранее ("ACTIVITY_X"
, "ACTIVITY_Y"
и "ACTIVITY_Z"
), но если я бегу createDataPartition(y = datanet$(ACTIVITY_X, ACTIVITY_Y, ACTIVITY_Z)p = 0.8,list = FALSE)
I 'Я получу сообщение об ошибке.
Любые идеи о том, как использовать createDataPartition
для перекрестной проверки, когда данные предиктора включают в себя несколько столбцов?
Можно ли было бы просто запустить createDataPartition
только с одним предиктором (скажем, "ACTIVITY_X"
) как тогда раздел будет применяться к остальным столбцам?
Любая помощь приветствуется!