使用caret
包,在创建数据分区75%培训和25%测试时,我们使用:
inTrain<- createDataPartition(y=spam$type,p=0.75, list=FALSE)
注意:数据集名为spam
,目标变量名为type
我的问题是,包括y=spam$type
论证的目的是什么?
创建数据分区的目的不仅仅是根据培训与测试所需的比例拆分整个数据集吗?为什么需要在代码中包含该参数?
答案 0 :(得分:7)
我假设有问题的createDataPartition()
指的是插入符号包。
如果sample$type
参数是一般情况下的因素,则随机抽样发生在每个类中。
更多解释:例如,如果我们按照与您的问题相同的比例对iris
数据集进行分区。
attach(iris)
summary(iris)
注意每个物种的数字。现在使用以下命令:
library(caret)
inTrain <- createDataPartition(y=Species, p=0.75, list=FALSE)
inTrain将从每个物种中获取大约75%的行,可以通过发出以下命令来验证:
summary(iris[inTrain,])
每个类别共有50种,随机选择38种(约75%)作为训练数据集。
答案 1 :(得分:-1)
df <- iris
验证原始数据集中因变量类的分布比例
prop.table(table(iris$Species))
R输出:
setosa versicolor virginica
0.3333333 0.3333333 0.3333333
创建拆分:
split <- createDataPartition(iris$Species, p = .30, list = F)
应用拆分会生成分层的随机抽样
证明:
prop.table(table(iris$Species[split]))
R输出:
setosa versicolor virginica
0.3333333 0.3333333 0.3333333