为插入符号包中的多个列创建DataPartition

为插入符号包中的多个列创建DataPartition,r,machine-learning,cross-validation,r-caret,knn,R,Machine Learning,Cross Validation,R Caret,Knn,我正在尝试使用caret包来运行KNN算法,以找到最佳的k值。我的数据看起来(datanet在代码上)带有“ACTIVITY_X”、“ACTIVITY_Y”和“ACTIVITY_Z”作为我的预测项,因为我想根据B列到D列的值对“Event”进行分类。所有列的行数都相同 为此,我首先需要分割数据进行交叉验证。以下是我的代码示例: # Split the data: indxTrain <- createDataPartition(y = datanet$ACTIVITY_X,p = 0.8

我正在尝试使用
caret
包来运行KNN算法,以找到最佳的k值。我的数据看起来(
datanet
在代码上)带有
“ACTIVITY_X”
“ACTIVITY_Y”
“ACTIVITY_Z”
作为我的预测项,因为我想根据B列到D列的值对
“Event”
进行分类。所有列的行数都相同

为此,我首先需要分割数据进行交叉验证。以下是我的代码示例:

# 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)
#拆分数据:

indxTrain您需要根据目标变量而不是预测值分割数据。即:

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

indxTrain为什么不将所有目标聚集到一列中?否则,您可以单独安装多个型号。我假设“预测器”指的是目标。我说的“预测器”指的是功能,而“响应”指的是目标(或类)。我试图根据B列到D列的值对事件(E列)进行分类。这有意义吗?我们按“结果”进行划分,即目标值而不是预测值。我在下面的回答中添加了一个简单的解释。谢谢。并且在我的目标参数中运行算法<代码>knnFit是的,完全一样。顺便说一句,如果有助于解决问题,你可以接受答案和/或投票。对于过去的问题,你也应该这样做。@juansalix欢迎你这样做;如果答案解决了您的问题,请接受它-见完成@沙漠之舟@akrun@NelsonGon@NelsonGon,对于参数
set.seed(400)
,在运行算法时,它是否需要匹配输入表的行数?我知道这个函数将生成一个随机集,但我想知道400是否只是一个经验值。你可以使用任何数字。我通常用233。这只是为了再现性。