#--------------------------------------------#
# INSTALLATION/MAJ DES LIRAIRIES NECESSAIRES #
#--------------------------------------------#
install.packages("nnet")
install.packages("ROCR")
#--------------------------------------#
# ACTIVATION DES LIRAIRIES NECESSAIRES #
#--------------------------------------#
library(nnet)
library(ROCR)
#-------------------------#
# PREPARATION DES DONNEES #
#-------------------------#
# Chargement des donnees
produit_QF <- read.csv("Data Produit QF.csv", header = TRUE, sep = ",", dec = ".",
stringsAsFactors = T)
# Creation des ensembles d'apprentissage et de test
produit_QF_EA <- produit_QF[1:400,]
produit_QF_ET <- produit_QF[401:600,]
# Suppression de la variable ID (identifiant)
produit_QF_EA <- subset(produit_QF_EA, select = -ID)
#-----------------#
# NEURAL NETWORKS #
#-----------------#
# Definition de la fonction d'apprentissage, test et evaluation par courbe ROC
test_nnet <- function(arg1, arg2, arg3, arg4, arg5){
# Redirection de l'affichage des messages intermédiaires vers un fichier texte
sink('output.txt', append=T)
# Apprentissage du classifeur
nn <- nnet(Produit~., produit_QF_EA, size = arg1, decay = arg2, maxit=arg3)
# Réautoriser l'affichage des messages intermédiaires
sink(file = NULL)
# Test du classifeur : classe predite
nn_class <- predict(nn, produit_QF_ET, type="class")
# Matrice de confusion
print(table(produit_QF_ET$Produit, nn_class))
# Test des classifeurs : probabilites pour chaque prediction
nn_prob <- predict(nn, produit_QF_ET, type="raw")
# Courbe ROC
nn_pred <- prediction(nn_prob[,1], produit_QF_ET$Produit)
nn_perf <- performance(nn_pred,"tpr","fpr")
plot(nn_perf, main = "Réseaux de neurones nnet()", add = arg4, col = arg5)
# Calcul de l'AUC
nn_auc <- performance(nn_pred, "auc")
cat("AUC = ", as.character(attr(nn_auc, "y.values")))
# Return ans affichage sur la console
invisible()
}
#-------------------------------------------------#
# APPRENTISSAGE DES CONFIGURATIONS ALGORITHMIQUES #
#-------------------------------------------------#
# Réseaux de neurones nnet()
test_nnet(50, 0.01, 100, FALSE, "red")
test_nnet(50, 0.01, 300, TRUE, "tomato")
test_nnet(25, 0.01, 100, TRUE, "blue")
test_nnet(25, 0.01, 300, TRUE, "purple")
test_nnet(50, 0.001, 100, TRUE, "green")
test_nnet(50, 0.001, 300, TRUE, "turquoise")
test_nnet(25, 0.001, 100, TRUE, "grey")
test_nnet(25, 0.001, 300, TRUE, "black")