我正在进行一些聚类研究,需要生成看起来像这些例子的合成数据:
我们有2个图,有2个类(红色和黑色)。我怎么能像这样生成2D数据?它有一个V结构,所以我考虑围绕直线产生点 - 有没有办法在 R 中做到这一点? 我正在使用 R ,但我对其他工具持开放态度(只需将数据导出)。
答案 0 :(得分:2)
这是一个想法。
n <- c(200,200) # Number of points in each class
cls <- rep(1:2, n) # Class memberships
i <- c(.2-.12*abs(rnorm(n[1])), # Noiseless x position
-.2+.12*abs(rnorm(n[2])))
noise <- .04*(.2-abs(i)) # Noise level relative to `i`
# Final sample
x <- cbind(i, abs(.5*i)) + noise*matrix(rnorm(sum(n)*2), sum(n), 2)
plot(x[,1], x[,2], col=cls)
答案 1 :(得分:1)
有没有理由生成这种非常特殊的类型的数据?从中得出的任何结果都可能不会推广到其他数据集。
无论如何,产生这种数据的显而易见的方法是使用非线性投影,例如:使用着名的“abs”函数(绝对值)。
即。 project x to(在python语法中,我不喜欢R):math.abs(x)
或者如果你想要一些额外的随机性:math.abs(x + random.random(.1)) + random.random(.1)