Un arbre de décision est un outil d’aide à la décision représentant un ensemble de choix sous la forme graphique d’un arbre. Les différentes décisions possibles sont situées aux extrémités des branches, et sont atteintes en fonction de décisions prises à chaque étape. C’est l’un des plus puissant classificteur
Pour pouvoire faire ma classification par arbre je vais avoire besoin de plusieur packages :
connexion pour pouvoire recupéré les donnée du projet tutoré sur phppgadmine
m=RPostgres::Postgres()
c=dbConnect(m,dbname="stid1904")
lieux<-dbGetQuery(c,'SELECT * FROM lieux_2008 LIMIT 5000')
caracteristiques<-dbGetQuery(c,'SELECT * FROM caracteristiques_2008 LIMIT 5000')
usagers<-dbGetQuery(c,'SELECT * FROM usagers_2008 LIMIT 5000')
vehicules<-dbGetQuery(c,'SELECT * FROM vehicules_2008 LIMIT 5000')fusion des tables
Acc=merge(x=lieux,y = usagers, by= "Num_Acc")
Acc=merge(Acc,caracteristiques, by="Num_Acc")
Acc=merge(Acc,vehicules, by="Num_Acc")creation de la table accident
on se pose la question de savoire si un accidant est mortel en fonction des condition au quelle l’accidant a eu lieu . On juge de la mortalité de l’accident si oui il sont mort ou si il ne sont pas mort
selection des variables et rectification des variable
library(dplyr)
X = Acc %>% select(grav,secu,atm,lum,catu,catr)
X = X %>% mutate(grav = factor(X$grav, levels = c(1, 2), labels = c('non','oui')))
X = X %>% mutate(secu = factor(X$secu, levels = c(11, 12), labels = c('portCeint','nonCeint')))
X = X %>% mutate(atm = factor(X$atm, levels = c(1,2,4), labels = c('Normale','Pluie','Neige')))
X = X %>% mutate(lum = case_when(X$lum=="1"~"jour",
X$lum=="2"~"Crépuscule",
X$lum=="3"~"Nuit "))
X = X %>% mutate(catu = case_when(X$catu=="1"~"Conducteur",
X$catu=="2"~"Passager",
X$catu=="3"~"Piéton"))
X = X %>% mutate(catr = case_when(X$catr=="1"~"Autoroute",
X$catr=="2"~"RouteNationale",
X$catr=="3"~"RouteDepar",
X$catr=="4"~"VoieCommunale"))
X=na.omit(X)
#write.csv(x = X, file = "accident.csv")J’ai choisi les variable :
- gravité qui sera ma variable des refererance
- secu qui est la securité a bord du vehicule avec port de ceinture ou non port de ceinture
- atm qui est le temps qu’il fesai dehor au moment de l’accident pluis , neige ou un temps normale
- lum qui repprensente la lumier au moment de l’accident crepuscule nuit ou joure
- catu qui est la perssone qui a eu l’accident quelle
- catr qui est la route ou y a eu l’accident Autoroute , national , departemental ou communale
choix de l’echantillon d’aprentissage
accident <- X
nb_lignes <- floor((nrow(accident)*0.75))
accident <- accident[sample(nrow(accident)), ]
accident.train <- accident[1:nb_lignes, ]
accident.test <- accident[(nb_lignes+1):nrow(accident), ] construction de l’arbre
accident.Tree <- rpart(grav~.,data=accident.train,method="class"
,control=rpart.control(minsplit=5,cp=0))library(readr)
accident.Tree <- rpart(grav~.,data=accident.train,method="class"
,control=rpart.control(minsplit=5,cp=0))
rpart.plot(accident.Tree, extra = 1)Le fichier d’apprentissage contenait 1516+172= 1688 individu
Dans la premiere feuil on peut voire qu’il y a 1516 individu qui sont en vie et 172 individu qui sont mort lors de l’accident . il est donc plus probalbre de ne pas mourire que de mourire .
La variable la plus discriminante au sens de l’indice de Gini est secu avec le port oui ou non de la ceinture . cette variable permet de partagée en deux sous fichier . on trouve a gauche port de ceinture 107 individu parmmis les 1505 qui sont mort . et on trouve a droite les perssone qui ne porté pas la ceinture et parmis elle se trouve 11 individue parmis 65 qui sont decedé .
Chaque sous fichier est encore partager par rapport a une autre variable , la plus discriminante pour lui .
En dessous du 1er sous fichier de droite on trouve la variable catr national et on voit que 4 individue parmer les 51 sont mort
Le fichier est donc classer en 10 en 11 classe .