1 red neuronal BP
###############Red BP y red RBF del paquete rsnns######################### #####
##-----------------------Red neuronal BP-------------------------------------- ------------------
Ambiente claro
rm(list=ls())
install.packages("mlbench")
install.packages("RSNNS")
install.packages("mlbench")
library(mlbench)
library(RSNNS)
library(ROCR)
data(Sonar)
2 Baraja el orden y determina x e y
##random simpling
Sonar<-Sonar[sample(1:nrow(Sonar),nrow(Sonar)),]
##Define input and output
SonarValues<-Sonar[,1:60]
SonarTargets<-as.numeric(Sonar[,61])-1
Convierta el tipo de carácter y en una variable numérica
##The data is divided into training set and test set
Sonar<-splitForTrainingAndTest(SonarValues,SonarTargets,ratio=0.3)
##Standardization
Sonar<-normTrainingAndTestSet(Sonar)
#Sonar$
Use splitForTrainAndTest para dividir el conjunto de entrenamiento y el conjunto de prueba
3 Cree el modelo y establezca el umbral inicial en 0,5
##多层感知器训练:mlp()
#Multilayer perceptron training
mymlp<-mlp(Sonar$inputsTrain,Sonar$targetsTrain,size= c(4,2),
learnFuncParams=0.2,maxit=500)
##model predict
out<-predict(mymlp, Sonar$inputsTest)
out[out<0.5]=0
out[out>=0.5]=1
##calculation accuracy
rate<-sum(out==Sonar$targetsTest)/length(Sonar$targetsTest)
4 Trace la curva ROC
##Predict training and testing respectively
tr_mlp<-predict(mymlp,Sonar$inputsTrain)
te_mlp<-predict(mymlp,Sonar$inputsTest)
##Draw ROC curve
tr_pred<-prediction(tr_mlp,Sonar$targetsTrain)
tr_perf<-performance(tr_pred,"tpr","fpr")
te_pred<-prediction(te_mlp,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)
Se puede encontrar que el conjunto de entrenamiento está sobreajustado, y la mejor precisión de umbral del conjunto de prueba es 0.907