0% ont trouvé ce document utile (0 vote)
24 vues3 pages

TD 09 - Approches Algorithmiques.R

Le document décrit le processus d'installation et d'activation de bibliothèques R nécessaires pour l'apprentissage automatique. Il inclut la préparation des données, la création de modèles d'apprentissage pour les arbres de décision, les forêts aléatoires et les k-plus proches voisins, ainsi que l'évaluation de ces modèles à l'aide de courbes ROC et de matrices de confusion. Des fonctions spécifiques sont définies pour chaque méthode d'apprentissage, permettant de tester différentes configurations algorithmiques.

Transféré par

oklaik
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues3 pages

TD 09 - Approches Algorithmiques.R

Le document décrit le processus d'installation et d'activation de bibliothèques R nécessaires pour l'apprentissage automatique. Il inclut la préparation des données, la création de modèles d'apprentissage pour les arbres de décision, les forêts aléatoires et les k-plus proches voisins, ainsi que l'évaluation de ces modèles à l'aide de courbes ROC et de matrices de confusion. Des fonctions spécifiques sont définies pour chaque méthode d'apprentissage, permettant de tester différentes configurations algorithmiques.

Transféré par

oklaik
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

#--------------------------------------------#

# INSTALLATION/MAJ DES LIRAIRIES NECESSAIRES #


#--------------------------------------------#

install.packages("rpart")
install.packages("randomForest")
install.packages("kknn")
install.packages("ROCR")

#--------------------------------------#
# ACTIVATION DES LIRAIRIES NECESSAIRES #
#--------------------------------------#

library(rpart)
library(randomForest)
library(kknn)
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)

#-------------------------#
# ARBRE DE DECISION RPART #
#-------------------------#

# Definition de la fonction d'apprentissage, test et evaluation par courbe ROC


test_rpart <- function(arg1, arg2, arg3, arg4){
# Apprentissage du classifeur
dt <- rpart(Produit~., produit_QF_EA, parms = list(split = arg1), control =
rpart.control(minbucket = arg2))

# Tests du classifieur : classe predite


dt_class <- predict(dt, produit_QF_ET, type="class")

# Matrice de confusion
print(table(produit_QF_ET$Produit, dt_class))

# Tests du classifieur : probabilites pour chaque prediction


dt_prob <- predict(dt, produit_QF_ET, type="prob")

# Courbes ROC
dt_pred <- prediction(dt_prob[,2], produit_QF_ET$Produit)
dt_perf <- performance(dt_pred,"tpr","fpr")
plot(dt_perf, main = "Arbres de décision rpart()", add = arg3, col = arg4)

# Calcul de l'AUC et affichage par la fonction cat()


dt_auc <- performance(dt_pred, "auc")
cat("AUC = ", as.character(attr(dt_auc, "y.values")))

# Return sans affichage sur la console


invisible()
}

#----------------#
# RANDOM FORESTS #
#----------------#

# Definition de la fonction d'apprentissage, test et evaluation par courbe ROC


test_rf <- function(arg1, arg2, arg3, arg4){
# Apprentissage du classifeur
rf <- randomForest(Produit~., produit_QF_EA, ntree = arg1, mtry = arg2)

# Test du classifeur : classe predite


rf_class <- predict(rf,produit_QF_ET, type="response")

# Matrice de confusion
print(table(produit_QF_ET$Produit, rf_class))

# Test du classifeur : probabilites pour chaque prediction


rf_prob <- predict(rf, produit_QF_ET, type="prob")

# Courbe ROC
rf_pred <- prediction(rf_prob[,2], produit_QF_ET$Produit)
rf_perf <- performance(rf_pred,"tpr","fpr")
plot(rf_perf, main = "Random Forests randomForest()", add = arg3, col = arg4)

# Calcul de l'AUC et affichage par la fonction cat()


rf_auc <- performance(rf_pred, "auc")
cat("AUC = ", as.character(attr(rf_auc, "y.values")))

# Return sans affichage sur la console


invisible()
}

#---------------------#
# K-NEAREST NEIGHBORS #
#---------------------#

# Definition de la fonction d'apprentissage, test et evaluation par courbe ROC


test_knn <- function(arg1, arg2, arg3, arg4){
# Apprentissage et test simultanes du classifeur de type k-nearest neighbors
knn <- kknn(Produit~., produit_QF_EA, produit_QF_ET, k = arg1, distance = arg2)

# Matrice de confusion
print(table(produit_QF_ET$Produit, knn$fitted.values))

# Courbe ROC
knn_pred <- prediction(knn$prob[,2], produit_QF_ET$Produit)
knn_perf <- performance(knn_pred,"tpr","fpr")
plot(knn_perf, main = "Classifeurs K-plus-proches-voisins kknn()", add = arg3,
col = arg4)

# Calcul de l'AUC et affichage par la fonction cat()


knn_auc <- performance(knn_pred, "auc")
cat("AUC = ", as.character(attr(knn_auc, "y.values")))
# Return sans affichage sur la console
invisible()
}

#-------------------------------------------------#
# APPRENTISSAGE DES CONFIGURATIONS ALGORITHMIQUES #
#-------------------------------------------------#

# Arbres de decision
test_rpart("gini", 10, FALSE, "red")
test_rpart("gini", 5, TRUE, "blue")
test_rpart("information", 10, TRUE, "green")
test_rpart("information", 5, TRUE, "orange")

# Forets d'arbres decisionnels aleatoires


test_rf(300, 3, FALSE, "red")
test_rf(300, 5, TRUE, "blue")
test_rf(500, 3, TRUE, "green")
test_rf(500, 5, TRUE, "orange")

# K plus proches voisins


test_knn(10, 1, FALSE, "red")
test_knn(10, 2, TRUE, "blue")
test_knn(20, 1, TRUE, "green")
test_knn(20, 2, TRUE, "orange")

Vous aimerez peut-être aussi