RForML之焦点包:kernlab
当前位置:以往代写 > 其他教程 >RForML之焦点包:kernlab
2019-06-14

RForML之焦点包:kernlab

RForML之焦点包:kernlab

![](http://img.shujuren.org/pictures/OG/5863d3989478a.png)

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

核能力家属
![](http://img.shujuren.org/pictures/T9/5863d9da5f51c.png)

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

![](http://img.shujuren.org/pictures/ZI/5863d6c3dba00.png)

### 二、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))
“`
![](http://img.shujuren.org/pictures/10/586511020b448.png)

##### 第三步:数据集分别
“`{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)
“`
![](http://img.shujuren.org/pictures/C6/5865127822abd.png)

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)
“`

![](http://img.shujuren.org/pictures/8U/5865149fd175c.png)
### 参考资料:
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

您在阅读中,有什么发起可能想法,请留言。

假如您以为本文有收获,请小额赞赏,让我有动力继承写出高质量的文章。

![](http://img.shujuren.org/pictures/PY/5863d61ae9862.png)

    关键字:

在线提交作业