#--------------------------------------------#
# INSTALLATION/MAJ DES LIRAIRIES NECESSAIRES #
#--------------------------------------------#
install.packages("e1071")
install.packages("naivebayes")
install.packages("ROCR")
#--------------------------------------#
# ACTIVATION DES LIRAIRIES NECESSAIRES #
#--------------------------------------#
library(e1071)
library(naivebayes)
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)
#-------------------------#
# SUPPORT VECTOR MACHINES #
#-------------------------#
# Definition de la fonction d'apprentissage, test et evaluation par courbe ROC
test_svm <- function(arg1, arg2, arg3){
# Apprentissage du classifeur
svm <- svm(Produit~., produit_QF_EA, probability=TRUE, kernel = arg1)
# Test du classifeur : classe predite
svm_class <- predict(svm, produit_QF_ET, type="response")
# Matrice de confusion
print(table(produit_QF_ET$Produit, svm_class))
# Test du classifeur : probabilites pour chaque prediction
svm_prob <- predict(svm, produit_QF_ET, probability=TRUE)
# Recuperation des probabilites associees aux predictions
svm_prob <- attr(svm_prob, "probabilities")
# Courbe ROC
svm_pred <- prediction(svm_prob[,1], produit_QF_ET$Produit)
svm_perf <- performance(svm_pred,"tpr","fpr")
plot(svm_perf, main = "Support vector machines svm()", add = arg2, col = arg3)
# Calcul de l'AUC et affichage par la fonction cat()
svm_auc <- performance(svm_pred, "auc")
cat("AUC = ", as.character(attr(svm_auc, "y.values")))
# Return sans affichage sur la console
invisible()
}
#-------------#
# NAIVE BAYES #
#-------------#
# Definition de la fonction d'apprentissage, test et evaluation par courbe ROC
test_nb <- function(arg1, arg2, arg3, arg4){
# Apprentissage du classifeur
nb <- naive_bayes(Produit~., produit_QF_EA, laplace = arg1, usekernel = arg2)
# Test du classifeur : classe predite
nb_class <- predict(nb, produit_QF_ET, type="class")
# Matrice de confusion
print(table(produit_QF_ET$Produit, nb_class))
# Test du classifeur : probabilites pour chaque prediction
nb_prob <- predict(nb, produit_QF_ET, type="prob")
# Courbe ROC
nb_pred <- prediction(nb_prob[,2], produit_QF_ET$Produit)
nb_perf <- performance(nb_pred,"tpr","fpr")
plot(nb_perf, main = "Classifieurs bayésiens naïfs naiveBayes()", add = arg3, col
= arg4)
# Calcul de l'AUC et affichage par la fonction cat()
nb_auc <- performance(nb_pred, "auc")
cat("AUC = ", as.character(attr(nb_auc, "y.values")))
# Return sans affichage sur la console
invisible()
}
#-------------------------------------------------#
# APPRENTISSAGE DES CONFIGURATIONS ALGORITHMIQUES #
#-------------------------------------------------#
# Support vector machines
test_svm("linear", FALSE, "red")
test_svm("polynomial", TRUE, "blue")
test_svm("radial", TRUE, "green")
test_svm("sigmoid", TRUE, "orange")
# Naive Bayes
test_nb(0, FALSE, FALSE, "red")
test_nb(20, FALSE, TRUE, "blue")
test_nb(0, TRUE, TRUE, "green")
test_nb(20, TRUE, TRUE, "orange")