为插入符号包中的多个列创建数据分区
createDataPartition for several columns in caret package
我正在尝试使用 caret
包到 运行 KNN 算法来找到最佳 k 值。我的数据看起来 like this(代码上的 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
包时理解正确,createDataPartition
中的 y
参数需要是预测变量对吗?
2) 如果是这样,我有前面提到的三个预测变量("ACTIVITY_X"
、"ACTIVITY_Y"
和 "ACTIVITY_Z"
),但是如果我 运行ning createDataPartition(y = datanet$(ACTIVITY_X, ACTIVITY_Y, ACTIVITY_Z)p = 0.8,list = FALSE)
我会收到一条错误消息。
关于当预测变量数据包含多个列时如何使用 createDataPartition
进行交叉验证的任何想法?
仅 运行 createDataPartition
和一个预测变量(假设 "ACTIVITY_X"
)是否可以,因为分区将应用于其余列?
感谢任何帮助!
您需要根据目标变量而不是预测变量来拆分数据。即:
indxTrain <- createDataPartition(y = datanet$Event,p = 0.8,list = FALSE)
这是 ?createDataPartition
的原因:
y
a vector of outcomes. For createTimeSlices, these should be in chronological order.
我正在尝试使用 caret
包到 运行 KNN 算法来找到最佳 k 值。我的数据看起来 like this(代码上的 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
包时理解正确,createDataPartition
中的 y
参数需要是预测变量对吗?
2) 如果是这样,我有前面提到的三个预测变量("ACTIVITY_X"
、"ACTIVITY_Y"
和 "ACTIVITY_Z"
),但是如果我 运行ning createDataPartition(y = datanet$(ACTIVITY_X, ACTIVITY_Y, ACTIVITY_Z)p = 0.8,list = FALSE)
我会收到一条错误消息。
关于当预测变量数据包含多个列时如何使用 createDataPartition
进行交叉验证的任何想法?
仅 运行 createDataPartition
和一个预测变量(假设 "ACTIVITY_X"
)是否可以,因为分区将应用于其余列?
感谢任何帮助!
您需要根据目标变量而不是预测变量来拆分数据。即:
indxTrain <- createDataPartition(y = datanet$Event,p = 0.8,list = FALSE)
这是 ?createDataPartition
的原因:
y
a vector of outcomes. For createTimeSlices, these should be in chronological order.