Langage R – Codes pour débuter

langage-r

Le langage R est un langage de programmation complet et autonome particulièrement puissant pour les applications statistiques et mathématiques, puisque développé dans ce but. C’est un environnement intégré de manipulation de données, de calcul et de préparation de graphiques. Il employé par une très grande communauté à travers le monde. Vous trouverez quelques éléments de base pour débuter la programmation avec le langage R.

Interface avec R studio :

Notions de base sur le langage R

Dans l’exemple suivant, nous allons utiliser le jeu de données « women ». Ce jeu de données très simple, comprends 15 unités statistiques et 2 variables. Il est intégré au logiciel. Il suffira de taper « women » dans le commander et d’exécuter via la fonction Run.

# Écriture décimale

options(scipen = 999)

# Créer un objet

x <- 5 ou x = 5 (L’objet x prend la valeur de 5)

y <- x (L’objet y prend la valeur de x)

x = y (L’objet x prend la valeur de y)

x -> y (L’objet y prend la valeur de x)

# Assignation

<- et ->assignation dans le sens de la flèche (a <-béquivaut donc à b->a); e.g.: x<-0; x+1->x (met x à 0,puis additionne x et 1 pour mettre le résultat dans x)

# Supprimer un ou plusieurs objets

rm(x)

rm(x,y,z…)

# Ouvrir jeu de données « women » intégré à R

women (+ Run)

# Tri croissant et décroissant

iris # Ouvrir le jeu de données iris
attach(iris)

x1 <- iris[order(Petal.Length),] # Le tri croissant est affiché part défault

x2 <- iris[order(-Petal.Length),] # Tri décroissant, rajouter le signe – devant la nom de la variable

detach(iris)
head(iris)

# Créer 2 objets à partir des colonnes

Taille = women$height

Poids = women$weight

# Résumé des données

=> Cette fonction pratique permet l’affichage de nombreuses informations comme la moyenne, la médiane, les quartiles ou les valeurs mini et maxi.

summary(Taille)

summary(Poids)

# Créer un boxplot

boxplot(Poids)

# Afficher l’écart type

sd(Poids)

# Rechercher une corrélation entre variables

cor(Taille,Poids)

=> Cette fonction permet l’affichage d’un coefficient de corrélation

# Test de corrélation entre variables

cor.test(Taille, poids)

# Créer un nuage de point

plot(Taille,Poids)

# Renommer les axes

plot(Taille,Poids, xlab= « Taille des femmes », ylab = « Poids des femmes »)

# Créer une droite de régression linéaire

abline(lm(Poids~Taille))

# Modifier l’épaisseur de la droite

abline(lm(Poids~Taille), lwd = 2)

# Créer un modèle

model = lm(Taille~Poids)

model

# Afficher les détails du modèle

summary(model)

Affichage

plot(x,y)

Créer des libellés

plot(x,y, xlab = »Masse », ylab = « Taille »)

# Test de corrélation

cor.test(x,y)

Exemple de résultat :

Data: x and z t = 21.646, df = 148, p-value < 2.2e-16 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.8270363 0.9055080 sample estimates:

cor 0.8717538

# Droite de régression


abline(lm(z~x))

droite de régression - Usageo


modele=lm(z~x)

# Séquence

1:10seq(from=1,to=20,by=2)

seq(1,20,by=5)seq(1,20,length=5)rep(5,times=10)rep(c(1,2),3)rep(c(1,2),each=3)e = rep(1,10)

# Test de normalité – Shapiro Wilk

Ce test permet de contrôler si un échantillon suit une loi normale ou non (hypothèse nulle : suit une loi normale, donc si p-value < 0.01, l’échantillon ne suit pas une loi normale). Cela permet alors d’utiliser certains tests statistiques si la réponse est oui.

  • shapiro.test(rnorm(100, mean = 5, sd = 3)) : renvoie une p-value non significative en principe.
  • shapiro.test(runif(100, min = 2, max = 4)) : renvoie une p-value significative en principe.


# Importer fichier texte

franck_data=read.csv(file.choose(), sep= »; », dec= », », header=FALSE)
franck_data=read.csv(file.choose(), sep= »; », dec= », », header=TRUE)

# Exposant

10**10 ou 10^10

# Opérateurs d’assignation

x <- « Hello World! »

y = « Hello World! »

« Hello World! » -> z

# Impression implicite

print(x)
x

# Création de variables

l <- TRUE
i <- 123L
n <- 1.23
c <- « ABC 123 »
d <- as.Date(« 2001-02-03 »)

Exemple :

Msg <- « Hello World! »

# Créer une fonction

f <- function(x) { x + 1 }

# Appeler une fonction

f(2)

# Créer un vecteur

v <- c(1, 2, 3);
v

# Créer une séquence

s <- 1:5
s

# Créer une matrice

m <- matrix(
data = 1:6,
nrow = 2,
ncol = 3)
m

# Créer un tableau

a <- array(
data = 1:8,
dim = c(2, 2, 2))
a

# Créer une liste

l <- list(TRUE, 123L, 2.34, « abc »)
l

# Créer un facteur

categories <- c(« Male », « Female », « Male », « Male », « Female »)
factor <- factor(categories)
factor
levels(factor)
unclass(factor)

# Création d’un bloc de données (data Frame)

df <- data.frame(
Name = c(« chat », « chien », « vache », « tigre »),
HowMany = c(5, 10, 15, 20),
IsPet = c(TRUE, TRUE, FALSE, FALSE))
df

# Indexation des cadres de données par ligne et par colonne

df[1, 2]

# Indexation des cadres de données par ligne

df[1, ]

# Indexation des cadres de données par colonne

df[ , 2]
df[[« HowMany »]]
df$HowMany

# Sous-ensembles de données

df[c(2, 4), ]
df[2:4, ]
df[c(TRUE, FALSE, TRUE, FALSE), ]
df[df$IsPet == TRUE, ]
df[df$HowMany > 10, ]
df[df$Name %in% c(« chat », « vache »), ]

# R est un langage vectorisé

1 + 2
c(1, 2, 3) + c(2, 4, 6)

# Nommé par rapport aux arguments ordonnés

m <- matrix(data = 1:6, nrow = 2, ncol = 3)
n <- matrix(1:6, 2, 3)
m == n
identical(m, n)

# Installation de packages

install.packages(« dplyr »)

# Chargement des packages

library(« dplyr »)

# Affichage de l’aide

?data.frame

# Include=FALSE

library(knitr)
opts_chunk$set(
cache = TRUE,
fig.path = ‘Rgraphics/fig’, dev = ‘pdf’, tidy = FALSE,
size = « footnotesize »
)

# Options, echo=FALSE, include=FALSE

options(prompt = « R> « , encoding = « utf-8″, continue =  » « , width = 60)
library(Renext)

# Data1

letters
class(letters)

# Data2, size= »scriptsize »

class(mtcars)
head(mtcars, n = 2)
head(ToothGrowth, n = 2)

# Pairs, size= »scriptsize », fig.show = »hide », size= »scriptsize », fig.width=8, fig.height=8

pairs(mtcars)

# Pairs1, size= »scriptsize », fig.show = »hide », size= »scriptsize », fig.width=8, fig.height=8

pairs(mtcars[ , c(« mpg », « disp », « hp », « wt »)])

# Chars

Films <- c(« The Good, the Bad and the Ugly », « A fistful of Dollars »)
Roles <- c(« Good », « Bad », « Evil », « Joe », « Marisol », « Ramรณn »)
myChars <- c(« 1 » , « 2 », « 3 ») ## Mind the quotes!
myChars <- c(‘aaaa’ , ‘bbbb’)

# Logical, size= »scriptsize »

myLogical <- c(TRUE, FALSE, TRUE)
all(myLogical)
any(myLogical)
myLogical <- c(TRUE, FALSE, NA, TRUE)
all(myLogical)
myLogical <- c(TRUE, TRUE, NA, TRUE)
all(myLogical)

# Tooth

head(ToothGrowth, n = 2)
class(ToothGrowth$supp)
nlevels(ToothGrowth$supp)

# Tooth1

levels(ToothGrowth$supp)
summary(ToothGrowth$supp)
table(ToothGrowth$supp)

# Factors, size= »scriptsize »

whenChar <- c(« Before », « After », « Before », « Before », « After »)
whenFact <- factor(whenChar)
whenFact

# Factors0, size= »scriptsize »

whenFact1 <- factor(whenChar, levels = c(« Before », « After »))
whenFact1

# Factors0a, size= »scriptsize »

whenFact2 <- factor(whenChar, levels = c(« Before », « During », « After »))
whenFact2

# Factors1, size= »scriptsize »

mtcars$am
(amFact <- factor(mtcars$am))

# Factors2, size= »scriptsize

(amFact1 <- factor(mtcars$am, labels = c(« automatic », « manual »)))

# Factors3, size= »scriptsize »

(whenInt2 <- as.integer(whenFact2))
(amInt <- as.integer(amFact))

# List

L <- list(aNum = c(1.1, 2.2, 3.3),
aChar = c(« a », « b »),
aLog = c(TRUE, TRUE , FALSE, FALSE))

# Df1

Simpsons <-
data.frame(Firstname = c(« Maggie », « Lisa », « Marge », « Bart », « Omer »),
Age = c(1, 8, 34, 10, 36))
summary(Simpsons)

# Df1a

Simpsons$Age
Simpsons[ , « Age »]

# Df1b

subset(Simpsons, subset = Age > 15)
subset(Simpsons, subset = Age > 15, select = Firstname)

# With

with(mtcars, mpg[cyl == 8 & disp > 350])
## ratio « Horse Power » / weight
with(mtcars, hp / wt)

# Within, size= »scriptsize »

df <- within(mtcars,
expr = {am <- factor(am, labels = c(« automatic », « manual »));
vs <- factor(vs, labels = c(« V-shaped », « straight »))});
head(df)

# NoWithin

df <- mtcars
df$am <- factor(df$am, labels = c(« automatic », « manual »))
dfvs <- factor(df$vs, labels = c(« V-shaped », « straight »))

# atFrameCoerce, size= »scriptsize »

as.matrix(Simpsons)
(m <- matrix(1:12, nrow = 3)) ## define a numeric matrix
as.data.frame(m)

# Fun, size = « scriptsize »

rep(1:3, 2) ## positional matching
rep(x = 1:3, times = 2) ## name matching
rep(1:3, times = 2) ## mixed matching

# Fun1, size = « scriptsize »

rep(1:3, each = 2)

# Fun2, size = « scriptsize »

rep(1:3, length.out = 10)
rep(1:3, len = 10) ## partial name matching

# EllipsisOnly

range(c(1.2, 2.2, 3.3), c(-2.2, -3.3, -1.1))

# Attach, size= »scriptsize »

library(SensoMineR)
design <- triangle.design(nbprod = 4, nbpanelist = 6, bypanelist = 3)
answer <- c(« X », »Y », »Y », »X », »Z », »X », »Y », »X », »Z », « X », »X », »Z »,
« X », »Y », »X », »Z », »X », »Y »)
tt <- triangle.test (design, answer)

# Chocolates, message=FALSE, size= »scriptsize »

rm(list = ls()) ## remove all objects in the Global Env.
library(SensoMineR)
data(chocolates)
ls()
class(hedochoc)

# Chocolates2, message=FALSE

rm(list = ls())
data(chocolates, package = « SensoMineR »)
ls()

# ‘child-DescStat.Rnw’, child=’DescStat.Rnw’

# Sample, out.extra= »width=6cm », fig.height=5

set.seed(123) ## initialize the random generator
y <- rnorm(200, mean = 10, sd = 0.6)
hist(y)

# Sample1, out.extra= »width=6cm », fig.height=5

d <- density(y) ## this is an object with class « density »
plot(d, main = « Estimated Density »)
rug(y) ## add a « rug » small marks showing the observations

# DescStat

mean(y)
var(y)
sd(y)

# Quant

quantile(y, probs = c(0.25, 0.50, 0.75))

# Ecdf, fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5

FHat <- ecdf(mtcars$mpg)
plot(FHat)

# Ecdf1, fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5, echo=FALSE

FHat <- ecdf(mtcars$mpg)
plot(FHat)
p <- 0.75
quant <- quantile(mtcars$mpg, prob = p)
abline(h = p, v = quant, col = « orangered »)
mtext(side = 1, at = quant, « quantile », col = « orangered », line = 2)
mtext(side = 2, at = p, « p », col = « orangered », line = 2)

# Skew, echo=FALSE, fig.show = »hide », fig.width=5, fig.height=5

x <- seq(from = 0, to = 1, len = 200)
plot(x, yl <- dbeta(x, shape1 = 6, shape2 = 2), type = « n »,
xlab = «  », ylab = «  », lwd = 2,
xaxt = « n », yaxt = « n », bty = « n »)
polygon(c(x[1], x, x[1]), c(0, yl, 0),
border = « OrangeRed »,
col = Renext::translude(« orange », alpha = 0.3),
main = « Skewed left »)
abline(h = 0)
plot(x, yl <- dbeta(x, shape1 = 2, shape2 = 8), type = « n »,
xlab = «  », ylab = «  », lwd = 2,
xaxt = « n », yaxt = « n », bty = « n »)
polygon(c(x[1], x, x[1]), c(0, yl, 0),
border = « ForestGreen »,
col = Renext::translude(« DarkOliveGreen2 », alpha = 0.3),
main = « Skewed right »)
abline(h = 0)

# HistTrans, echo=FALSE, fig.show= »hide »

set.seed(123)
x <- rnorm(100, mean = 2.9)
breaks <- seq(0.5, 6.5, by = 0.5)
h1 <- hist(x , breaks = breaks,
main = «  »,
xaxt = « n », yaxt = « n »,
xlab = «  », ylab = «  »)
y <- sqrt(x)
h2 <- hist(y, breaks = sqrt(breaks),
main = «  »,
xaxt = « n », yaxt = « n »,
xlab = «  », ylab = «  »)

# Mpg, fig.show = »hide », size= »scriptsize », fig.width=4, fig.height=4

data(mpg, package = « ggplot2 »)
with(mpg, hist(cty, breaks = 12,
main = « miles per (US) gallon »))
with(mpg, hist(235.21 / cty, breaks = 12,
main = « litres / 100 km »))

# Mpg1, fig.show = »hide », size= »scriptsize », fig.width=4, fig.height=4

with(mpg, boxplot(cty, main = « miles per gallon »))
with(mpg, boxplot(235.21 / cty, main = « litres / 100 km »))

# BoxplotMtcars, out.extra= »width=6cm », fig.height=5

mtcars1 <- within(mtcars,
am <- factor(am, labels = c(« automatic », « manual »)))
plot(wt ~ am, data = mtcars1)

# BoxplotMtcars1, out.extra= »width=6cm », fig.height=5

mtcars1 <- within(mtcars,
am <- factor(am, labels = c(« automatic », « manual »)))
plot(wt ~ am, data = mtcars1, notch = TRUE)

# ViolinplotMtcars2, out.extra= »width=6cm », fig.height=5, echo=FALSE

library(ggplot2); library(tibble); library(dplyr)
is_outlier <- function(x) { return(x < quantile(x, 0.25) – 1.5 * IQR(x) | x > quantile(x, 0.75) + 1.5 * IQR(x))
}

dat <- mtcars1 %>% tibble::rownames_to_column(var = « outlier ») %>%
group_by(am) %>%
mutate(is_outlier = ifelse(is_outlier(wt), wt, as.numeric(NA)))
dat$outlier[which(is.na(dat$is_outlier))] <- as.numeric(NA)

g <- ggplot(data = dat,
aes(x = am, y = wt)) +
geom_boxplot() +
geom_text(aes(label = outlier), na.rm = TRUE, hjust = -0.3)
print(g)

# BoxplotMtcars2, out.extra= »width=6cm », fig.height=5, echo=FALSE

library(ggplot2); library(tibble); library(dplyr)
dat <- mtcars1 %>% tibble::rownames_to_column(var = « outlier ») %>%
group_by(am) %>%
mutate(is_outlier = ifelse(is_outlier(wt), wt, as.numeric(NA)))
dat$outlier[which(is.na(dat$is_outlier))] <- as.numeric(NA)

g <- ggplot(data = dat,
aes(x = am, y = wt)) +
geom_violin() + geom_boxplot(width=0.1)
print(g)

# Heights, fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5

library(alr3); data(heights)
with(heights, qqplot(x = Mheight, y = Dheight, pch = 16, cex = 0.4))

# Salaries, fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5

library(carData)
## data(Salaries) not needed because the package autoloads the data
x <- subset(Salaries, subset = {sex == « Female »})$salary
y <- subset(Salaries, subset = {sex == « Male »})$salary
qqplot(x = x, y = y, main = « Salaries: Male against Female »)

# Salaries2, fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5

qqplot(x = rnorm(n = 1000), y = y,
main = « Salaries: Male against random normal »)
qqnorm(y = y, main = « qqnorm »)

# Salaries3, fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5

qqnorm(y = log(y), main = « qqnorm for log salaries »)

# Cat,fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5

library(ggplot2)
(tt <- table(mpg$manufacturer))
barplot(tt, horiz = TRUE, las = 1)
pie(tt)

# Cat1,fig.show = »hide », size= »scriptsize », fig.width=5, fig.height=5

The parameter ‘mar’ gives the four margins

oldPar <- par(mar = c(2 , 7, 3, 2))
barplot(tt, horiz = TRUE, las = 1, main = « by manufacturer »)

# Restet the pars

par(oldPar)

Exploiter des données

# Lire un fichier de données délimité par des tabulations

cars <- read.table(
file = « Cars.txt »,
header = TRUE,
sep = « \t »,
quote = « \ » »)

# Inspecter les résultats

head(cars)

# Charger la bibliothèque dplyr

library(dplyr)

# Sélectionnez un sous-ensemble de colonnes

temp <- select(
.data = cars,
Transmission,
Cylinders,
Fuel.Economy)

head(temp)

# Filtrer un sous-ensemble de lignes

temp <- filter(
.data = temp,
Transmission == « Automatic »)

# Inspecter les résultats

head(temp)

# Filtrer un sous-ensemble de lignes

temp <- mutate(
.data = temp,
Consumption = Fuel.Economy * 0.425)

# Inspecter les résultats

head(temp)

# Grouper par une colonne

temp <- group_by(
.data = temp,
Cylinders)

# Inspecter les résultats

head(temp)

# Inspecter les résultats

temp <- summarize(
.data = temp,
Avg.Consumption = mean(Consumption))

Inspecter les résultats

head(temp)

# Organiser les lignes dans l’ordre décroissant

temp <- arrange(
.data = temp,
desc(Avg.Consumption))

# Inspecter les résultats

head(temp)

# Convertir en data frame

efficiency <- as.data.frame(temp)

# Inspecter les résultats

print(efficiency)

# Chaîne des méthodes ensemble

efficiency <- cars %>%
select(Fuel.Economy, Cylinders, Transmission) %>%
filter(Transmission == « Automatic ») %>%
mutate(Consumption = Fuel.Economy * 0.425) %>%
group_by(Cylinders) %>%
summarize(Avg.Consumption = mean(Consumption)) %>%
arrange(desc(Avg.Consumption)) %>%
as.data.frame()

Inspecter les résultats

print(efficiency)

Enregistrer les résultats dans un fichier CSV

write.csv(
x = efficiency,
file = « Fuel Efficiency.csv »,
row.names = FALSE)

Statistiques descriptives

Définir le répertoire de travail

Lire un fichier de données CSV

cars <- read.csv(« Cars.csv »)

Voir le contenu

head(cars)

Créer une table de fréquences

table(cars$Transmission)

Obtenir la valeur minimale

min(cars$Fuel.Economy)

Obtenir la valeur maximale

max(cars$Fuel.Economy)

Obtenir la valeur moyenne

mean(cars$Fuel.Economy)

Obtenir la valeur médiane

median(cars$Fuel.Economy)

Obtenez les quartiles

quantile(cars$Fuel.Economy)

Obtenir l’écart type

sd(cars$Fuel.Economy)

Obtenir la valeur totale

sum(cars$Fuel.Economy)

Obtenir le coefficient de corrélation

cor(
x = cars$Cylinders,
y = cars$Fuel.Economy)

Résumer une table entière

summary(cars)

Visualisation de données

Lire le fichier CSV

cars <- read.csv(« Cars.csv »)

Installer la bibliothèque ggplot2

install.packages(« ggplot2 »)

Charger la bibliothèque ggplot2

library(ggplot2)

Créer un diagramme à barres de fréquence

ggplot(
data = cars,
aes(x = Transmission)) +
geom_bar() +
ggtitle (« Nombre de voitures par type de transmission ») +
xlab (« Type de transmission ») +
ylab (« Nombre de voitures »)

Créer un histogramme

ggplot(
data = cars,
aes(x = Fuel.Economy)) +
geom_histogram(
bins = 10) +
ggtitle (« Répartition de l’économie de carburant ») +
xlab (« Économie de carburant (mpg) ») +
ylab (« Nombre de voitures »)

Créer un graphique de densité

ggplot(
data = cars,
aes(x = Fuel.Economy)) +
geom_density() +
ggtitle (« Répartition de l’économie de carburant ») +
xlab (« Économie de carburant (mpg) ») +
ylab (« Nombre de voitures »)

Créer un nuage de points

ggplot(
data = cars,
aes(
x = Cylinders,
y = Fuel.Economy)) +
geom_point() +
ggtitle (« Répartition de l’économie de carburant ») +
xlab (« Économie de carburant (mpg) ») +
ylab (« Nombre de voitures »)

Création de modèles statistiques

Charger les données

data(iris)

Peak des données

head(iris)

Créer un nuage de points

plot(
x = iris$Petal.Length,
y = iris$Petal.Width,
main = « Longueur des pétales d’iris par rapport à la largeur »,
xlab = « longueur des pétales (cm) »,
ylab = « largeur des pétales (cm) »)

Créer un modèle de régression linéaire

model <- lm(
formula = Petal.Width ~ Petal.Length,
data = iris)

Résumer le modèle

summary(model)

Trace une ligne de régression sur le graphique

lines(
x = iris$Petal.Length,
y = model$fitted,
col = « red »,
lwd = 3)

Obtenir le coefficient de corrélation

cor(
x = iris$Petal.Length,
y = iris$Petal.Width)

Prédire de nouvelles valeurs à partir du modèle

predict(
object = model,
newdata = data.frame(
Petal.Length = c(2, 5, 7)))

Données volumineuses

Installation et Chargeement le package ff

install.packages(« ff »)
library(ff)

Lire un fichier CSV en tant que ff data frame

irisff <- read.table.ffdf(
file = « Iris.csv »,
FUN = « read.csv »)

Inspecter la classe

class(irisff)

Inspecter les noms de colonne

names(irisff)

Inspecter les premières lignes

irisff[1:5,]

Charger le package biglm

install.packages(« biglm »)
library(biglm)

Créer un modèle de régression linéaire

model <- biglm(
formula = Petal.Width ~ Petal.Length,
data = irisff)

Résumer le modèle

summary(model)

Créer un nuage de points

plot(
x = irisff$Petal.Length[],
y = irisff$Petal.Width[],
main = « Longueur des pétales d’iris par rapport à la largeur »,
xlab = « longueur des pétales (cm) »,
ylab = « largeur des pétales (cm) »)

Obtenir l’ordonnée à l’origine du modèle

b <- summary(model)$mat[1,1]

Obtenir la pente du modèle

m <- summary(model)$mat[2,1]

Trace une ligne de régression sur le graphique

lines(
x = irisff$Petal.Length[],
y = m * irisff$Petal.Length[] + b,
col = « red »,
lwd = 3)

Prédire de nouvelles valeurs avec le modèle

predict(
object = model,
newdata = data.frame(
Petal.Length = c(2, 5, 7),
Petal.Width = c(0, 0, 0)))

Machine learning

Charger les données

data(iris)

Définir une graine pour rendre le hasard reproductible

set.seed(42)

Échantillonner au hasard 100 des 150 index de lignes

indexes <- sample(
x = 1:150,
size = 100)

Inspecter les index aléatoires

print(indexes)

Créer un ensemble de formation à partir d’index

train <- iris[indexes, ]

Créer un ensemble de test à partir des index restants

test <- iris[-indexes, ]

Charger le package de l’arbre de décision

install.packages(« tree »)
library(tree)

Former un modèle d’arbre de décision

model <- tree(
formula = Species ~ .,
data = train)

Inspecter le modèle

summary(model)

Visualiser le modèle d’arbre de décision

plot(model)
text(model)

Charger la bibliothèque de brasseurs de couleurs

library(RColorBrewer)

Créer une palette de couleurs

palette <- brewer.pal(3, « Set2 »)

Crée un nuage de points coloré par espèce

plot(
x = iris$Petal.Length,
y = iris$Petal.Width,
pch = 19,
col = palette[as.numeric(iris$Species)],
main = « Longueur des pétales d’iris par rapport à la largeur »,
xlab = « longueur des pétales (cm) »,
ylab = « largeur des pétales (cm) »)

Tracer les limites de décision

partition.tree(
tree = model,
label = « Species »,
add = TRUE)

Prédire avec le modèle

predictions <- predict(
object = model,
newdata = test,
type = « class »)

Créer une matrice de confusion

table(
x = predictions,
y = test$Species)

Charger le package caret

install.packages(« caret »)
library(caret)

Évaluer les résultats de la prédiction

install.packages(« e1071 »)
library(e1071)

confusionMatrix(
data = predictions,
reference = test$Species)

Sauvegarder le modèle d’arbre

save(model, file = « Tree.RData »)

Sauvegarder les données d’entraînement

save(train, file = « Train.RData »)

langage-r