createDataPartition для нескольких столбцов в каретном пакете - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь найти оптимальное значение 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") как тогда раздел будет применяться к остальным столбцам?

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 01 февраля 2019

Вам нужно разделить ваши данные в соответствии с целевой переменной, а не предикторами.То есть:

indxTrain <- createDataPartition(y = datanet$Event,p = 0.8,list = FALSE)

Вот почему из ?createDataPartition:

y
вектор результатов.Для createTimeSlices они должны быть в хронологическом порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...