我有一个关于这个问题kkmeans
功能在kernlab
R的包我是新来这个包,请原谅我,如果我失去了一些东西很明显这里。
我想在一组使用内核k均值与函数“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-装置使用的内核函数来计算对象的相似性。 在简单的k意味着你通过所有质心环,并选择最小化的距离(下使用度量),以给定的数据点的一个。 在核方法(在默认核函数的情况下kkmeans
是radial basis function
),则简单地通过质心环,并选择最大化核函数值 (RBF的情况下)或最小化内核诱导距离 (任何内核)的一个。 提供转换内核距离量度的详细描述这里 -在由内核诱导一般距离K
可以通过计算d^2(a,b) = K(a,a)+K(b,b)-2K(a,b)
,但作为在RBF的情况下, K(x,x)=1
对于所有x
,可以只最大化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
中使用的核函数的意义。