⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 specc.r

📁 这是核学习的一个基础软件包
💻 R
字号:
#specc functionsetGeneric("specc",function(x, ...) standardGeneric("specc"))setMethod("specc", signature(x = "formula"),function(x, data = NULL, na.action = na.omit, ...){    mt <- terms(x, data = data)    if(attr(mt, "response") > 0) stop("response not allowed in formula")    attr(mt, "intercept") <- 0    cl <- match.call()    mf <- match.call(expand.dots = FALSE)    mf$formula <- mf$x    mf$... <- NULL    mf[[1]] <- as.name("model.frame")    mf <- eval(mf, parent.frame())    na.act <- attr(mf, "na.action")    x <- model.matrix(mt, mf)    res <- specc(x, ...)       cl[[1]] <- as.name("specc")    kcall(res) <- cl    if(!is.null(na.act))         n.action(res) <- na.action       return(res)  })setMethod("specc",signature(x="matrix"),          function(x, centers, kernel = "rbfdot", kpar = list(sigma = 0.1), iterations = 200, na.action = na.omit, ...){  x <- na.action(x)  x <- as.matrix(x)  m <- nrow(x)  if (missing(centers))    stop("centers must be a number or a matrix")  if (length(centers) == 1) {    nc <-  centers    if (m < centers)      stop("more cluster centers than data points.")  }  else    nc <- dim(centers)[2]    ret <- new("specc")  if(!is(kernel,"kernel"))    {      if(is(kernel,"function")) kernel <- deparse(substitute(kernel))      kernel <- do.call(kernel, kpar)    }  if(!is(kernel,"kernel")) stop("kernel must inherit from class `kernel'")  km <- kernelMatrix(kernel,x)  if(is(kernel)[1] == "rbfkernel")    diag(km) <- 0    d <- 1/sqrt(rowSums(km))  l <- d * km %*% diag(d)  xi <- eigen(l)$vectors[,1:nc]  yi <- xi/sqrt(rowSums(xi^2))  res <- kmeans(yi, centers, iterations)  cluster(ret) <- res$cluster   centers(ret) <- res$centers  size(ret) <- res$size  kernelf(ret) <- kernel## use res$withinss for model selection !!  return(ret)})  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -