我如何在r中创建一些数据集?
问题描述:
我正在学习不平衡的学习问题。 “不平衡”意味着数据集在其类之间呈现不均等分布,例如,您给出了1000个示例的二元分类问题。总共900个示例用类0标记,其他100个示例用类1标记。我如何在r中创建一些数据集?
大多数分类算法没有考虑数据集的基本分布,所以他们没有处理这种“不平衡的学习问题”。因为如果他们将所有示例分类为0类,那么它们的准确率为90%。
类不平衡分类中的一个主要问题是数据集中的类重叠事件。 (类别不平衡问题的分类:Aida Ali,Siti Mariyam Shamsuddin和Anca L.Ralescu,ISSN 2074-8523)
所以我想模拟这些问题像1)比较一些方法时,数据集有不同的重叠度,2)比较一些方法时,数据集在类不平衡内。 datasets have overlapping
datasets have within class imbalance
所以我必须作出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
而现在我必须做出类变量Y具有与这些X的关系。我想我可以通过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))
但其实我不知道我的代码是正确的。另外我想知道如何在班级不平衡数据集中做出决定。 你能帮我吗?我如何制作这些数据集?
答
您可以使用内置函数twoClassSim
从插入符号包。
library(caret)
set.seed(123)
data <- twoClassSim(
1000,
intercept = -16.5,
linearVars = 15,
noiseVars = 5
)
table(data$Class)
Class1 Class2
899 101
您确实只需要调用一次'set.seed'就可以使数据重现。 – xxfelixxx
@xxfelixxx谢谢我对此进行了修改。 – Ssunny
看看这篇文章。有一个伟大的3级数据集,该人员用权重1:49:50创建(实际为50:2450:2500)https://stats.stackexchange.com/questions/157714/r-package-for-weighted-random-forest -classwt-option –