Comment utiliser la fonction createDataPartition() dans R
Vous pouvez utiliser la fonction createDataPartition() du package caret dans R pour partitionner un bloc de données en ensembles d’entraînement et de test pour la création de modèles.
Cette fonction utilise la syntaxe de base suivante :
createDataPartition(y, times = 1, p = 0,5, list = TRUE, …)
où:
- y : vecteur de résultats
- times : nombre de partitions à créer
- p : pourcentage de données à utiliser dans l’ensemble d’entraînement
- list : s’il faut stocker les résultats dans la liste ou non
L’exemple suivant montre comment utiliser cette fonction dans la pratique.
Exemple : utilisation de createDataPartition() dans R
Supposons que nous disposions d’un bloc de données dans R avec 1 000 lignes contenant des informations sur les heures étudiées par les étudiants et leur score correspondant à un examen final :
#make this example reproducible
set.seed(0)
#create data frame
df <- data.frame(hours=runif(1000, min=0, max=10),
score=runif(1000, min=40, max=100))
#view head of data frame
head(df)
hours score
1 8.966972 55.93220
2 2.655087 71.84853
3 3.721239 81.09165
4 5.728534 62.99700
5 9.082078 97.29928
6 2.016819 47.10139
Supposons que nous souhaitions adapter un modèle de régression linéaire simple qui utilise les heures étudiées pour prédire la note finale à l’examen.
Supposons que nous souhaitions entraîner le modèle sur 80 % des lignes du bloc de données et le tester sur les 20 % de lignes restantes.
Le code suivant montre comment utiliser la fonction createDataPartition() du package caret pour diviser le bloc de données en ensembles d’entraînement et de test :
library(caret)
#partition data frame into training and testing sets
train_indices <- createDataPartition(df$score, times=1, p=.8, list=FALSE)
#create training set
df_train <- df[train_indices , ]
#create testing set
df_test <- df[-train_indices, ]
#view number of rows in each set
nrow(df_train)
[1] 800
nrow(df_test)
[1] 200
Nous pouvons voir que notre ensemble de données d’entraînement contient 800 lignes, ce qui représente 80 % de l’ensemble de données d’origine.
De même, nous pouvons voir que notre ensemble de données de test contient 200 lignes, ce qui représente 20 % de l’ensemble de données d’origine.
Nous pouvons également visualiser les premières lignes de chaque ensemble :
#view head of training set
head(df_train)
hours score
1 8.966972 55.93220
2 2.655087 71.84853
3 3.721239 81.09165
4 5.728534 62.99700
5 9.082078 97.29928
7 8.983897 42.34600
#view head of testing set
head(df_test)
hours score
6 2.016819 47.10139
12 2.059746 96.67170
18 7.176185 92.61150
23 2.121425 89.17611
24 6.516738 50.47970
25 1.255551 90.58483
Nous pouvons ensuite procéder à l’entraînement du modèle de régression à l’aide de l’ensemble d’entraînement et évaluer ses performances à l’aide de l’ensemble de test.
Ressources additionnelles
Les didacticiels suivants expliquent comment utiliser d’autres fonctions courantes dans R :
Comment effectuer une validation croisée K-Fold dans R
Comment effectuer une régression linéaire multiple dans R
Comment effectuer une régression logistique dans R