说明
这是一个关于以核方法为主的r包介绍,这个包包含了许多用于分类,聚类降维和可视化的非线性机器学习工具。该包使用了条件负定核(cnd kernel),共集成了26个核,包含q核版本和cnd版本,其中包含dbscan,谱聚类,广义判别分析 (gda),主成分分析(pca),isomap,线性判别分析(lle),sammon mapping和tsne。
1.在r中直接输入代码在cran上查找安装
install.packages("qkerntool" )
2 直接下载好的qkerntool_1.19.tar.gz
install.packages("e:/qkerntool_1.18.tar.gz" )
3 rstudio中在菜单栏tools-install packages中查找安装
install from下拉菜单可以选择是从cran还是本地安装包安装
cnd kernel
由于用于数据分析的经典核方法通常被认为仅限于正定核,因此,在qkerntools中提出了新的距离算法,新核方法计算高维投影空间中的距离公式如下
在这里插入图片描述
qkernel使用两个向量参数之间的内核函数值,即通常依赖于由定义的内核矩阵h之类的表达式
在这里插入图片描述
更改核的参数会更改数据的投影,从而更改投影空间中的距离。
为了通过r实现负定核表达,构建了一个s4类r包,其中表示为类“qkernel”或“cndkernel”的对象。这些函数可以作为参数传递给泛型函数,这些函数可以评估更有用的内核表达式,如核矩阵
qkernmatrix 由核方法构成的核矩阵
> library("qkerntool" )
> set.seed(20181110)
> x <- matrix(rnorm(300), ncol = 100)
> qkfunc <- rbfbase(sigma=10,q=0.8)
> qkfunc
qbase qkernel function.
hyperparameter : sigma = 10 q = 0.8
> qkfunc(x[1, ], x[2, ])
[,1]
[1,] 4.976754
> qkernmatrix(qkfunc,x)
an object of class "qkernmatrix"
[,1] [,2] [,3]
[1,] 0.000000 4.976754 4.969811
[2,] 4.976754 0.000000 4.960555
[3,] 4.969811 4.960555 0.000000
创造自己的核
自己输入核函数
> rbf1 <- function(x, y){
+ sdist <- crossprod(x) + crossprod(y) - 2*crossprod(x,y)
+ sdist <- (1 - exp(log(0.8)*sdist/10))/(1-0.8)
+ return(sdist)
>+ }
> class(rbf1) <- "qkernel"
> rbf1(x[1, ], x[2, ])
qkpca
参数名 内容
x n x d矩阵(n个样本,d个特征)或继承cndkernmatrix ,qkernmatrix的核矩阵
kernel 核类型
qpar 核参数
features 选择的成分个数
th 忽略主成分的特征值的值
以iris数据集为例,随机提取二十个样本为测试集,对剩余样本使用“rbfbase”核进行降维以及对应的预测,例子使用了iris数据集,代码及结果如下
data(iris)
test <- sample(1:150,20)
qkpc <- qkpca(~.,data=iris[-test,-5],kernel="rbfbase",
qpar=list(sigma=50,q=0.8),features=2)
# print the principal component vectors
pcv(qkpc)
#plot the data projection on the components
plot(rotated(qkpc),col=as.integer(iris[-test,5]),
xlab="1st principal component",ylab="2nd principal component" )
# embed remaining points
emb <- predict(qkpc,iris[test,-5])
points(emb,col=as.integer(iris[test,5]))
[ last edited by jjdg on 2019-4-26 at 20:55 ]
[ Last edited by jjdg on 2019-4-26 at 20:55 ] |