RSNNS包 RBF神经网络
【摘要】 RSNNS包 RBF神经网络
1 RBF神经网络
在统计学章节里面,博主介绍了RBF神经网络的原理,通过把线性不可分的数据,通过径向基距离转化为线性可分数据,在使用径向基函数进行分类。
本章里面将使用R代码实现RBF网络
rm(list=ls())
install.packages("mlbench")
install.packages("RSNNS")
install.packages("mlbench")
library(mlbench)
library(RSNNS)
library(ROCR)
相关的包依赖
此次章节承接上一章节的代码
链接: link.
2 建立模型与预估
由于数据使用R自带的数据集,并进行过清洗转化,直接建模
#############################RBF neural network##################################
myrbf<- rbf(Sonar$inputsTrain, Sonar$targetsTrain, size=100,
maxit=1000,linOut=F)
```
0.5阈值估计,一般阈值根据业务设计
##model predict
out<-predict(myrbf, Sonar$inputsTest)
out[out<0.5543928]=0
out[out>=0.5543928]=1
#calculation accuracy
rate<-sum(out==Sonar$targetsTest)/length(Sonar$targetsTest)
3 绘制ROC曲线
方法与上一章节一致,绘制ROC曲线,找出auc值
##Prediction probability
tr_rbf<-predict(myrbf,Sonar$inputsTrain)
te_rbf<-predict(myrbf,Sonar$inputsTest)
##draw ROC curve
tr_pred<-prediction(tr_rbf,Sonar$targetsTrain)
tr_perf<-performance(tr_pred,"tpr","fpr")
te_pred<-prediction(te_rbf,Sonar$targetsTest)
te_perf<-performance(te_pred,"tpr","fpr")
plot(tr_perf,col='green',main="ROC of Models")
plot(te_perf, col='black',lty=2,add=TRUE);
abline(0,1,lty=2,col='red')
tr_auc<-round(as.numeric(performance(tr_pred,'auc')@y.values),3)
tr_str<-paste("Train-AUC:",tr_auc,sep="")
legend(0.3,0.45,c(tr_str),2:8)
te_auc<-round(as.numeric(performance(te_pred,'auc')@y.values),3)
te_ste<-paste("Test-AUC:",te_auc,sep="")
legend(0.3,0.25,c(te_ste),2:8)
4 发现最佳阈值
library(colorspace)
library(pROC)
modelroc=roc(Sonar$targetsTest,te_rbf,plot=T)
plot(modelroc,print.auc=T,auc.polygon=T,grid=c(0.1,0.2),grid.col=c("green","red"),max.auc.polygon=T,auc.polygon.col="skyblue",print.thres=T)
modelauc=auc(modelroc)
modelauc
rocbest=coords(modelroc,"best")
发现最佳阈值为0.5543928
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)