82 Paquete RSNNS para implementar rápidamente la red neuronal RBF

1 red neuronal RBF

En el capítulo de estadísticas, el bloguero presentó el principio de la red neuronal RBF Al convertir los datos linealmente inseparables en datos linealmente separables a través de la distancia de base radial, la función de base radial se usa para la clasificación.
En este capítulo, usaremos el código R para implementar la red RBF

rm(list=ls())
install.packages("mlbench")
install.packages("RSNNS")
install.packages("mlbench")
library(mlbench)
library(RSNNS)
library(ROCR)

Dependencias de paquetes relacionados
Este capítulo hereda el código del capítulo anterior
Enlace: enlace .

2 Construya el modelo y estime

Dado que los datos utilizan el conjunto de datos que viene con R y se han limpiado y transformado, el modelado directo

#############################RBF neural network##################################
myrbf<- rbf(Sonar$inputsTrain, Sonar$targetsTrain, size=100, 
            maxit=1000,linOut=F)
            ```

Estimación de umbral de 0,5, el umbral general está diseñado de acuerdo con el negocio

##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)

inserte la descripción de la imagen aquí

3 Trace la curva ROC

El método es el mismo que el del capítulo anterior, dibuja la curva ROC y encuentra el valor 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

4 Encontrar el mejor umbral

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")

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Se encontró que el umbral óptimo era 0.5543928

Supongo que te gusta

Origin blog.csdn.net/weixin_44498127/article/details/124231922
Recomendado
Clasificación