- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 R 的 kernlab
包中的 kkmeans
函数有疑问。我是这个包的新手,如果我在这里遗漏了一些明显的东西,请原谅我.
我想将一个新数据点分配给一组集群中的一个集群,这些集群是使用内核 k-means 和函数“kkmeans”创建的。对于常规聚类,可以通过计算新数据点与聚类质心之间的欧几里德距离来实现这一点,并选择具有最近质心的聚类。在内核 k 均值中,必须在特征空间中执行此操作。
以 kkmeans 描述中使用的示例为例:
data(iris)
sc <- kkmeans(as.matrix(iris[,-5]), centers=3)
假设我在这里有一个新的数据点,我想将其分配给上面在 sc
中创建的最接近的集群。
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.0 3.6 1.2 0.4
关于如何执行此操作有任何提示吗?非常感谢您的帮助。
最佳答案
核K-means使用核函数来计算对象的相似度。在简单的 k 均值中,您循环遍历所有质心并选择一个使到给定数据点的距离(在使用的度量下)最小化的质心。如果使用核方法(kkmeans
中的默认核函数是径向基函数
),您只需循环质心并选择最大化核函数值的一个(对于 RBF)或最小化内核诱导距离(对于任何内核)。提供了将内核转换为距离度量的详细说明here - 一般来说,内核K
引起的距离可以通过d^2(a,b) = K(a,a)+K(b,b)-2K(a,b)计算)
,但与 RBF 的情况一样,对于所有 x
,K(x,x)=1
,您可以最大化 K(a ,b)
而不是最小化整个 K(a,a)+K(b,b)-2K(a,b)
。
要从 kkmeans
对象获取内核函数,您可以使用 kernelf
函数
> data(iris)
> sc <- kkmeans(as.matrix(iris[,-5]), centers=3)
> K = kernelf(sc)
举个例子
> c=centers(sc)
> x=c(5.0, 3.6, 1.2, 0.4)
> K(x,c[1,])
[,1]
[1,] 1.303795e-11
> K(x,c[2,])
[,1]
[1,] 8.038534e-06
> K(x,c[3,])
[,1]
[1,] 0.8132268
> which.max( c( K(x,c[1,]), K(x,c[2,]), K(x,c[3,]) ) )
[1] 3
就使用的核函数而言,最近的质心是c[3,]=5.032692 3.401923 1.598077 0.3115385
。
关于r - 将新数据点分配给内核 k-means 中的簇(R 中的 kernlab 包)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621642/
对于kernlab::ksvm中的分类任务,使用的默认SVM是C-svm(LIBSVM,Chang & Lin),它计算二元分类任务。通过计算多个一对多二元分类器并聚合结果,可以将其扩展到多类问题。通
我想使用 R 中的 SVM 实现来进行一些回归。我已经尝试使用 e1071 中的 svm 但我受到那里的内核功能的限制。因此,我从 kernlab 转向 ksvm。但我有一个主要缺点,就是 kernl
我一直在尝试构建 SVM 分类器,但在 predict 方面遇到了问题。 > modelrbf predict(modelrbf,set[24,]) Error in .local(object,
我观察到 kernlab 使用 rbfkernel 作为, rbf(x,y) = exp(-sigma * euclideanNorm(x-y)^2) 但根据这个wiki link , rbf 内核应
我是否遗漏了一些明显的东西?这工作正常: library(kernlab) kernelMatrix(rbfdot(1), c(1,2,3)) 返回: An object of class "kern
我需要在 colon-‐cancer 上执行内核 PCA数据集: 然后 我需要绘制主成分数量与 PCA 数据分类精度的关系图。 对于第一部分,我使用 kernlab在 R 中如下(让特征数为 2,然
我有纬度和经度,所以我需要将RBF内核重新定义为exp(-1/2||sophere distrance||^2),这意味着我需要自己重写一个核函数。 我写我的内核如下: round.kernel <-
我正在尝试在 SLES 11 SP1 上安装 kernlab 软件包。我安装了所有必备软件包,例如。 gcc-fortran... 使用 install.packages("kernlab") 开始安
我的缓慢工作代码的简化示例(函数 rbf 来自 kernlab 包)需要加速: install.packages('kernlab') library('kernlab') rbf <-
我有一些数据,Y 变量是一个因素 - 好或坏。我正在使用 'caret' 包中的 'train' 方法构建支持向量机。使用“训练”功能,我能够最终确定各种调整参数的值并获得最终的支持向量机。对于测试数
我正在尝试在 R 上安装 kernlab 包,但我收到了一大堆错误消息,接近尾声时它说: g++ -shared -L/usr/local/lib64 -o kernlab.so brweight.o
我正在查看用于高斯过程回归的 kernlab 包中的 R 函数 gausspr。该过程由核函数的超参数和数据中的噪声定义。我在文档中看到我可以指定 var: the initial noise var
我在 kernlab 包中发现了一些令人费解的行为:估计数学上相同的 SVM 在软件中会产生不同的结果。 为了简单起见,此代码片段仅获取虹膜数据并将其设为二元分类问题。正如您所看到的,我在两个 SVM
我正在尝试使用用户定义的内核。我知道 kernlab 在 R 中提供用户定义的内核(自定义内核函数)。我使用了包括 kernlab 包在内的垃圾数据。(变量数量=57 示例数量=4061) 我定义了内
我使用以下语法调用 R 中 kernlab 包的 ksvm 方法 svmFit = ksvm(x=solTrainXtrans, y=solTrainYSVM, kernel="stringdot",
我正在尝试使用库(kernlab)中的 SVM 创建一个 2D 图,但它出现了 plot 函数 只适用于二元分类。我希望能够绘制 3 个(或更多)组,如下例所示。 我的数据结构就像虹膜数据一样,所以我
我对 R 的 kernlab 包中的 kkmeans 函数有疑问。我是这个包的新手,如果我在这里遗漏了一些明显的东西,请原谅我. 我想将一个新数据点分配给一组集群中的一个集群,这些集群是使用内核 k-
试图更好地了解如何train(tuneLength = )工作于 {caret} .当我试图理解来自 {kernlab} 的 SVM 方法之间的一些差异时,我感到困惑。我已经查看了文档 ( here
我正在尝试使用 R 中 kernlab 包的 ksvm 函数进行 epsilon-SVM 回归。我想将参数 C(正则化常数)和 epsilon(不敏感)作为向量(向量长度 = 训练数据长度)。但我不知
我正在测试kernlab封装在回归问题中。看来这是一个常见的问题,获取 'Error in .local(object, ...) : test vector does not match model
我是一名优秀的程序员,十分优秀!