RForML之焦点包:kernlab

### 一、kernlab简介
kernlab包是R中实现基于核能力呆板进修的扩展包(需要特别安装和加载,才气利用内里强大的算法群)。
核能力家属

kernlab的算法群可以办理呆板进修中分类、回归、奇异值检测、分位数回归、降维等诸多任务(这个包真够强大啊)。
kernlab还包罗支持向量机(SVM)、谱聚类、核主身分阐明(KPCA)和高斯进程等算法。

### 二、kernlab安装和加载
代码如下:
“`{r}
##kernlab 安装和加载
if(!suppressWarnings(require(‘kernlab’)))
{
install.packages(‘kernlab’)
require(‘kernlab’)
}
“`
### 三、kernlab应用
通过kernlab的先容可知,kernlab包中算法可以完成呆板进修许多任务。
#### 分类问题
##### 第一步:生成数据集(人造)
“`{r}
n <- 1000 # 样本数
p <- 2 # 变量数
sigma <- 1 # 漫衍的尺度差
meanpos <- 0 # 正样天职布的均值
meanneg <- 3 # 负样天职布的均值
npos <- round(n/2) # 正样本数目
nneg <- n-npos # 负样本数目
# 生成正样本
##配置种子,为了试验可反复性
set.seed(1234)
xpos <- matrix(rnorm(npos*p,mean=meanpos,sd=sigma),npos,p)
##生成负样本
set.seed(1234)
xneg <- matrix(rnorm(nneg*p,mean=meanneg,sd=sigma),npos,p)
##正样本和负样本归并
x <- rbind(xpos,xneg)
# 生成标签
y <- matrix(c(rep(1,npos),rep(-1,nneg)))
“`
##### 第二步:数据集可视化
“`{r}
# Visualize the data
plot(x,col=ifelse(y>0,1,2))
“`

##### 第三步:数据集分别
“`{r}
ntrain <- round(n*0.8) # number of training examples
tindex <- sample(n,ntrain) # indices of training samples
xtrain <- x[tindex,]
xtest <- x[-tindex,]
ytrain <- y[tindex]
ytest <- y[-tindex]
“`
练习样本占比80%
##### 第四步:练习SVM模子
“`{r}
library(kernlab)
svp <- ksvm(xtrain,ytrain,type="C-svc",kernel=’vanilladot’,C=100,scaled=c())
“`
##### 第五步:模子功效可视化和应用
1 模子功效可视化
“`{r}
plot(svp,data=xtrain)
“`

2 模子应用到测试集
“`{r}
ypred <- predict(svp,xtest) ##应用到测试集
table(ytest,ypred) ##操作table()生成夹杂矩阵
sum(ypred==ytest)/length(ytest) ##模子预测的精确率
“`
功效如下:
ypred
ytest -1 1
-1 99 2
1 3 96
精确率:0.975
##### 第六步:绘制ROC曲线
“`{r}
if(!suppressWarnings(require(‘ROCR’)))
{
install.packages(‘ROCR’)
require(‘ROCR’)
}
ypredscore <- predict(svp,xtest,type="decision")
pred <- prediction(ypredscore,ytest)
perf <- performance(pred, measure = "tpr", x.measure = "fpr")
plot(perf)
“`

### 参考资料:
1 kernlab文档;https://cran.r-project.org/web/packages/kernlab/kernlab.pdf
2 kernlab作者分享文档:https://eeecon.uibk.ac.at/~zeileis/papers/Ensemble-2005.pdf
3 ROCR文档:https://cran.r-project.org/web/packages/ROCR/ROCR.pdf
4 ROC曲线寄义:https://en.wikipedia.org/wiki/Receiver_operating_characteristic
您在阅读中,有什么发起可能想法,请留言。
假如您以为本文有收获,请小额赞赏,让我有动力继承写出高质量的文章。
