我怎么能在r中制作一些数据集?

时间:2017-10-22 04:04:05

标签: r dataset simulation

我正在研究不平衡的学习问题。 'Imbalanced'意味着数据集在其类之间呈现不均等的分布,例如,您给出了具有1000个示例的二进制分类问题。总共900个示例标记为0级,其他100个示例标记为1级。

大多数分类算法都没有考虑数据集的基础分布,因此他们没有处理这种“不平衡的学习问题”。因为如果他们将所有示例归类为0级,那么它们的准确率为90%。

类不平衡分类中的一个主要问题是数据集中的类重叠事件。单一类别中的不平衡可能会加剧问题。(类别不平衡问题的分类:评论,Aida Ali,Siti Mariyam Shamsuddin和Anca L.Ralescu,ISSN 2074-8523)

所以我想模拟这些问题,比如1)比较数据集具有不同重叠度的一些方法,2)比较数据集在类不平衡时的一些方法。 labels

datasets have overlapping

所以我必须在r中创建数据集,我不知道如何生成这些数据集。 我只是做了一些自变量

set.seed(3)
x1    <- rnorm(n)           # normal dist
x3    <- rexp(n)            # exponential dist
x5    <- rpois(n,lambda=3)  # poisson dist
error <- rnorm(n)           # error term

现在我必须创建与这些X有关系的类变量Y.我想我可以通过X的系数来调整重叠率。

IR  <- 90 # IR means imbalanced ratio  'IR=# of class0/# of class1'
eta <- -200*x1 + 0.5*sin(x3) + 300*x5^3 + error
Y   <- as.factor( ifelse( eta > quantile( eta, IR/(IR+1) ), 1, 0) )

但实际上我不知道我的代码是否正确。另外我想知道如何在类不平衡数据集中制作。 你可以帮帮我吗?我该如何制作这些数据集?

1 个答案:

答案 0 :(得分:0)

您可以使用 caret 包中的内置函数twoClassSim

library(caret)
set.seed(123)
data <- twoClassSim(
  1000,
  intercept = -16.5,
  linearVars = 15,
  noiseVars = 5
)
table(data$Class)

Class1 Class2 
   899    101