【问题标题】:Creating data partition in R在 R 中创建数据分区
【发布时间】:2016-07-20 20:05:40
【问题描述】:

使用caret 包,在创建数据分区时 75% 训练和 25% 测试,我们使用:

inTrain<- createDataPartition(y=spam$type,p=0.75, list=FALSE)

注意:数据集命名为spam,目标变量命名为type

我的问题是,包含y=spam$type 参数的目的是什么?

创建数据分区的目的不就是为了根据训练与测试所需的比例分割整个数据集吗?为什么需要在代码中包含该参数?

【问题讨论】:

  • 不是 100%,但我相信这只是为了告诉命令您对数据进行分区的变量。除了阐明如何分区外,我不确定它是否重要 - 计算机更容易理解
  • 你从哪里得到这个函数'createDataPartition'? 'str(inTrain)' 输出什么?
  • @a.powell “告诉..您通过什么变量对数据进行分区”是什么意思?我对分区的理解只是将整个数据进行拆分。为什么我们要在这个阶段提出“类型”是我的目标变量这一事实?我是否在概念上误解了数据分区的概念?
  • 不,你是对的,但软件可能不像你那么直观。该命令只允许它从该类中获取随机样本。
  • @Zhenyuan Li 好吧,我确实阅读了文档,但它并没有让我清楚地了解这个具体问题。为什么你会认为我没有这样做?我的问题对您没有意义的原因是因为我们来自不同的学习路径,但没关系,我从下面的 Imran Ali 那里得到了答案。还是谢谢你。

标签: r partitioning r-caret data-partitioning


【解决方案1】:

我假设有问题的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%)作为训练数据集。

【讨论】:

  • 是的,我指的是插入符号包。 sample$type 是我想在构建线性模型后预测的目标变量。 “每个类中发生随机抽样”是什么意思?
  • 我已经为答案添加了进一步的解释。您可以通过选择不同的 p 值来轻松理解,例如0.5 并检查为训练集选择了多少行。
【解决方案2】:

df &lt;- iris

验证原始数据集中因变量类的分布比例

prop.table(table(iris$Species))

R 输出:

 setosa     versicolor  virginica 
 0.3333333  0.3333333  0.3333333 

创建拆分:

split &lt;- createDataPartition(iris$Species, p = .30, list = F)

应用拆分生成分层随机抽样

证明:

prop.table(table(iris$Species[split]))

R 输出:

 setosa     versicolor virginica 
 0.3333333  0.3333333  0.3333333 

【讨论】:

  • 点评来源: 请了解如何正确格式化您的答案。见:How to Answer
猜你喜欢
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多