R 用核主成分分析法分离圆
我试图重现一种使用核PCA的方法。目标是从两个同心圆中分离出点 创建数据:R 用核主成分分析法分离圆,r,pca,R,Pca,我试图重现一种使用核PCA的方法。目标是从两个同心圆中分离出点 创建数据: circle <- data.frame(radius = rep(c(0, 1), 500) + rnorm(1000, sd = 0.05), phi = runif(1000, 0, 2 * pi), group = rep(c("A", "B"), 500)) # circle <- transform(circle,
circle <- data.frame(radius = rep(c(0, 1), 500) + rnorm(1000, sd = 0.05),
phi = runif(1000, 0, 2 * pi),
group = rep(c("A", "B"), 500))
#
circle <- transform(circle,
x = radius * cos(phi),
y = radius * sin(phi),
z = rnorm(length(radius))) %>% select(group, x, y, z)
TFRAC = 0.75
#
train <- sample(1:1000, TFRAC * 1000)
circle.train <- circle[train,]
circle.test <- circle[-train,]
> head(circle.train)
group x y z
491 A -0.034216 -0.0312062 0.70780
389 A 0.052616 0.0059919 1.05942
178 B -0.987276 -0.3322542 0.75297
472 B -0.808646 0.3962935 -0.17829
473 A -0.032227 0.0027470 0.66955
346 B 0.894957 0.3381633 1.29191
circle尝试sigma=20。我想你会得到你想要的答案。kernlab中的sigma实际上是rbf核的gamma,因此它们是负相关的
library(kernlab)
circle.kpca <- kpca(~ ., data = circle.train[, -1], kernel = "rbfdot", kpar = list(sigma = 10), features = 1)