Le but de ce TP est de développer des modèles statistiques pour prédire le type de cancer en utilisant les données de l’étude TCGA (The Cancer Genome Atlas; https://cancergenome.nih.gov/) qui regroupent des données RNA-seq de patients atteints d’un cancer du sein (Breast Invasice Cancer or BIC). Cela regroupe deux types de cancers invasifs: les carcinomes ductal et lobulaire. Les articles originaux de ces études sont ici: https://www.nature.com/articles/nature11412 et https://www.cell.com/cell/fulltext/S0092-8674(15)01195-2

Pour ce TP, vous utiliserez les données suivantes :

  • fichier BIC_log2-norm-counts_edgeR_DEG_top_1000.tsv.gz qui correspond au fichier d’expression pour les 1000 gènes (lignes) les plus significatifs pour 819 échantillons (colonnes).
  • fichier BIC_sample-classes.tsv.gz qui contient les étiquettes des 819 échantillons.

Sur le serveur Rstudio de l’IFB-core-cluster, les données sont dans le répertoire : /shared/projects/du_bii_2019/data/module3/seance4/BIC/

si vous travaillez sur une installation locale, vous pouvez télécharger un clone de ce cours

Au cours de ce TP, vous allez développer différents modèles statistiques :

  • Dans un premier temps, vous construirez des modèles pour prédire si le cancer est du type “lumina.A” ou pas en utilisant :
    • un modèle CART,
    • un modèle de random forest,
    • un modèle de SVM,
  • Dans un second temps, vous construirez un modèle de random forest pour prédire un des 4 types de cancer : Basal.like, HER2pos, Luminal.A ou Luminal.B.

1 Préparation des données

  1. Ouvrez le fichier d’expression des gènes en utilisant la commande read.table(). Stockez ce data.frame dans l’objet BIC.expr. Vérifiez la taille du data.frame généré en utilisant la commande dim().
[1] 1000  819
  1. Ouvrez le fichier qui contient les étiquettes des échantillons en utilisant la commande read.table(). Stockez ce data.frame dans l’objet BIC.sample.classes.
  • Vérifiez le nombre d’échantillons disponibles dans ce jeu de données.
[1] 819   4

Le fichier contient 819 lignes et 4 colonnes. Chaque ligne correspond à un échantillon.

  • Le tableau contient non seulement les classes (colonne cancer.type) mais également les valeurs positive/negative pour trois gènes utilisés comme marqueurs pour diagnostiquer le type de cancer, indiqués dans les en-têtes de colonnes: ER1, PR1 et Her2.
                                      cancer.type      ER1      PR1     Her2
1AB92ADA-637E-4A42-A39A-70CEEEA41AE3    Luminal.A Positive Positive Negative
DA98A67C-F11F-41D3-8223-1161EBFF8B58 Unclassified Positive Negative Negative
06CCFD0F-7FB8-471E-B823-C7876582D6FC      HER2pos Negative Negative Positive
A33B2F42-6EC6-4FB2-8BE5-542407A0382E Unclassified Positive Negative Negative
D021A258-8713-4383-9DCA-45E2F54A0411    Luminal.A Positive Positive Negative
C705FA90-D9AA-4949-BACA-1C022A14CB03    Luminal.A Positive Positive Negative
  • Déterminez le type de variables disponibles dans ce jeu de données en utilisant la fonction summary().
       cancer.type        ER1            PR1            Her2    
 Basal.like  :131   Negative:184   Negative:267   Negative:631  
 HER2pos     : 41   Positive:635   Positive:552   Positive:188  
 Luminal.A   :422                                               
 Luminal.B   :118                                               
 Unclassified:107                                               

La première colonne du data.frame BIC.sample.classes renseigne sur le type de cancer de chaque échantillon.

Comme vous pouvez le voir, il y a 5 types de cancer, dont un “Unclassified”. Lors de la prédiction du type de cancer, ce type risque de biaiser les résultats. Nous allons donc temporairement supprimer ces échantillons des jeux de données, mais nous reviendrons dessus à la fin du TP, car ils constituent une excellente application de l’apprentissage automatique. En effet, si un modèle (classifieur entraîné) s’avère donner de bons résultats lors de l’évaluation (training / testing), nous pourrons l’utiliser pour prédire le type de cancer de ces échantillons de type “Unclassified”.

  1. Supprimez les échantillons correspondant au type Unclassified dans les deux data.frames.
  • En utilisant la fonction which(), identifiez les lignes du data.frame BIC.sample.classes qui correspondent au type Unclassified. Vérifiez que vous avez bien sélectionné 107 individus.
unclassified
FALSE  TRUE 
  712   107 
[1] 107
  • Supprimez ces individus dans le data.frame BIC.sample.classes en utilisant l’indexation négative. Vérifiez la taille du nouveau data.frame. Le nouveau data.frame se nommera BIC.sample.classes.4.
[1] 712   4
  • Supprimez les échantillons correspondant au type Unclassified du data.frame BIC.expr. Attention, dans le data.frame BIC.expr les échantillons sont présentés en colonnes.
[1] 1000  712
  • Pour construire les premiers modèles, vous n’allez pas utiliser les quatre types de cancers, mais seulement deux :
    • Luminal.A,
    • non Luminal.A : qui correspondent aux autres types. Vous allez donc transformer la colonne cancer.type du data.frame BIC.sample.classes.2 en une variable qualitative à deux classes : “Luminal.A” ou “no.Luminal.A”.
  1. Créez le vecteur new.type qui contient 712 fois (nrow(BIC.sample.classes.2)) la valeur “Luminal.A”.
  1. Identifiez les individus qui ne contiennent pas “Luminal.A” dans la première colonne (colonne cancer.type) du data.frame BIC.sample.classes.4.
  1. Pour ces individus, assignez la valeur “no.Luminal.A” au vecteur new.type.
  1. Remplacez la colonne cancer.type du data.frame BIC.sample.classes.2 par le vecteur new.type que vous aurez transformé en facteur (fonction as.factor())
  1. Suppression des variables corrélées

Une des étapes du nettoyage du jeu de données correspond à supprimer les variables (ici les gènes) corrélées. Pour cela, vous allez utiliser la fonction findCorrelation() de la librairie caret. Cette fonction prend en entrée la matrice de corrélation entre les variables et le seuil de corrélation à partir duquel on considère que deux variables sont corrélées.

  • Calculez la matrice de corrélation entre les gènes différentiellement exprimés. Comme dans le data.frame BIC.expr.4 les gènes sont en lignes, pensez à transposer votre data.frame.
[1] 1000 1000
  • Identifiez les gènes à supprimer en utilisant un seuil de corrléation de 0.8 et la fonction findCorrelation(). Combien de gènes allez vous supprimer.
[1] 1000 1000
[1] 36
 [1] 136 150 250 301 365 391 501 513 585 697 790 821 829 830 832 846 902 929 994  37 217 139 255  45 287 157 247 554 288 437 307 164 729 755 145 151
  • Supprimez ces gènes du data.frame BIC.expr.4.
[1] 964 712
  1. Pour créer les modèles de prédiction, il est nécessaire d’avoir un data.frame qui regroupe pour chaque échantillon les gènes et son type de cancer.
  • Créez le data.frame df.data qui contient :

    • en lignes ; les échantillons
    • en colonnes : les gènes et le type de cancer.

Pour cela, utilisez la commande data.frame().
+ La première colonne de votre data.frame df.data doit correspondre aux types de cancer.
+ les colonnes 2 à 965 doivent correspondre aux gènes.

[1] 712 965
  • Assignez “cancer.type” comme nom de colonne à la première colonne de df.data.
cancer.type ENSG00000000003.14 ENSG00000000419.12 ENSG00000000457.13 ENSG00000000460.16
X1AB92ADA.637E.4A42.A39A.70CEEEA41AE3 Luminal.A 16.52775 17.50349 17.96040 16.77151
X06CCFD0F.7FB8.471E.B823.C7876582D6FC no.Luminal.A 18.67677 18.15315 17.51914 16.85386
D021A258.8713.4383.9DCA.45E2F54A0411 Luminal.A 17.75758 16.58779 19.09800 18.15086
C705FA90.D9AA.4949.BACA.1C022A14CB03 Luminal.A 18.83214 17.81858 19.01201 17.85704
X85380A2D.9951.4D4B.A2A4.6F5F2AFC54E3 Luminal.A 18.52097 17.30436 18.63385 17.61519
F53A9C63.1AF7.4CBC.B8B7.4AA7AAED3364 Luminal.A 16.26266 18.52012 17.55598 17.35059
X13EF5323.EAD9.4BC7.8AC4.33875BF12E17 no.Luminal.A 17.38771 17.97410 18.22298 17.05569
X079EACA1.0319.4B54.B20B.673F4576C69D no.Luminal.A 16.95062 17.75839 18.04384 17.74923
X2E63B18E.FDC1.414C.9291.492D3D380232 no.Luminal.A 18.66658 17.17837 17.21481 16.00784
F5303C4B.7008.44AF.8D22.0BA38750DEA2 no.Luminal.A 18.52184 17.05632 17.93438 17.02691

2 Préparation des échantillons d’apprentissage et de test

  • L’échantillon d’apprentissage est l’échantillon qui va permettre d’apprendre les modèles. Il sera constitué de 2/3 des échantillons sélectionnés de manière aléatoire.

  • L’échantillon de test est l’échantillon qui va permettre d’estimer les performances non biaisées des modèles. Il sera constitué du 1/3 des échantillons restant.

  1. En utilisant la fonction sample() créez un vecteur qui contient le numéro d’indice de 2/3 des individus choisis aléatoirement. Ces individus vont constituter le jeu d’apprentissage.
  1. Créez le data.frame mat.app qui contient les valeurs d’expression des gènes et le type de cancer pour les individus choisis aléatoirement. Cette matrice correspond au jeu d’apprentissage.
[1] 474 965
  1. Créez le data.frame mat.test qui contient les valeurs d’expression de gènes et le type de cancer pour les individus restants (1/3). Cette matrice correspond au jeu test.
[1] 238 965

3 Validation des deux échantillons.

  1. Calculez une analyse en composantes principale en utilisant le data.frame df.data. Pour cela, utilisez la fonction PCA() de la librairie FactoMineR. Pensez à ne pas prendre en compte la colonne renseignant sur le type de cancer car ce n’est pas une variable quantitative.
  1. Créez un vecteur vcol.set qui contiendra les couleurs associés à chaque indidivu suivant s’il appartient au jeu d’apprentissage (en magenta) ou au jeu test (en bleu). Pour cela, :
  • Créez le vecteur vcol.set qui contient 712 fois (nrow(df.data)) la couleur bleu.
  • Dans ce vecteur, remplacez la valeur “bleu” des individus appartenant à l’échantillon d’apprentissage (ind.app) par la valeur “magenta”.
  1. Représentez la projection des individus sur les 2 premières composantes principales en colorant les individus suivant l’échantillon auquel ils appartiennent.
Projection of the samples on the two first principal components.

Projection of the samples on the two first principal components.

  1. Déterminez la répartition des deux types de cancer dans les échantillons d’apprentissage et test.
Répartition des deux types de cancers dans les échantillons d'apprentissage et de test

Répartition des deux types de cancers dans les échantillons d’apprentissage et de test

D’après les résultats obtenus, concluez sur la validité les échantillons d’apprentissage et test. Si vous concluez au fait que les deux échantillons ne sont pas valides, alors reprenez la procédure pour générer à nouveau des échantillons d’apprentissage et de test.

4 Prédiction du type de cancer en utilisant une approche de CART

  1. A partir des données de l’échantillon d’apprentissage (mat.app), construisez un modèle de CART permettant de prédire le type de cancer (2 classes) en fonction de l’expression des gènes. Pour cela, utilisez la fonction rpart() de la librairie rpart.
n= 474 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 474 194 Luminal.A (0.59071730 0.40928270)  
   2) ENSG00000004838.13>=15.52558 263  47 Luminal.A (0.82129278 0.17870722)  
     4) ENSG00000008838.18< 20.69176 253  37 Luminal.A (0.85375494 0.14624506)  
       8) ENSG00000047346.12>=17.66518 237  27 Luminal.A (0.88607595 0.11392405)  
        16) ENSG00000005448.16>=15.18117 228  21 Luminal.A (0.90789474 0.09210526)  
          32) ENSG00000005238.19>=15.99697 220  16 Luminal.A (0.92727273 0.07272727)  
            64) ENSG00000037637.10>=16.91799 212  11 Luminal.A (0.94811321 0.05188679) *
            65) ENSG00000037637.10< 16.91799 8   3 no.Luminal.A (0.37500000 0.62500000) *
          33) ENSG00000005238.19< 15.99697 8   3 no.Luminal.A (0.37500000 0.62500000) *
        17) ENSG00000005448.16< 15.18117 9   3 no.Luminal.A (0.33333333 0.66666667) *
       9) ENSG00000047346.12< 17.66518 16   6 no.Luminal.A (0.37500000 0.62500000) *
     5) ENSG00000008838.18>=20.69176 10   0 no.Luminal.A (0.00000000 1.00000000) *
   3) ENSG00000004838.13< 15.52558 211  64 no.Luminal.A (0.30331754 0.69668246)  
     6) ENSG00000029725.16>=18.94642 132  64 no.Luminal.A (0.48484848 0.51515152)  
      12) ENSG00000010404.17>=19.6765 77  25 Luminal.A (0.67532468 0.32467532)  
        24) ENSG00000006652.13< 18.37902 67  16 Luminal.A (0.76119403 0.23880597)  
          48) ENSG00000062716.11>=19.24657 58   9 Luminal.A (0.84482759 0.15517241)  
            96) ENSG00000040531.14>=16.32803 47   2 Luminal.A (0.95744681 0.04255319) *
            97) ENSG00000040531.14< 16.32803 11   4 no.Luminal.A (0.36363636 0.63636364) *
          49) ENSG00000062716.11< 19.24657 9   2 no.Luminal.A (0.22222222 0.77777778) *
        25) ENSG00000006652.13>=18.37902 10   1 no.Luminal.A (0.10000000 0.90000000) *
      13) ENSG00000010404.17< 19.6765 55  12 no.Luminal.A (0.21818182 0.78181818)  
        26) ENSG00000030419.16>=17.28779 9   2 Luminal.A (0.77777778 0.22222222) *
        27) ENSG00000030419.16< 17.28779 46   5 no.Luminal.A (0.10869565 0.89130435) *
     7) ENSG00000029725.16< 18.94642 79   0 no.Luminal.A (0.00000000 1.00000000) *
  1. En utilisant la fonction prp() de la librairie rpart.plot(), représentez le modèle obtenu.
Model

Model

  1. Sur les données de l’échantillon d’apprentissage calculez l’accuracy du modèle (=le taux de bien prédit) (\(Acc = \frac{VP+VN}{VP+VN+FP+FN}\)) .
  • En utilisant la fonction predict(), prédisez le type de cancer pour chaque individu de l’échantillon d’apprentissage. N’oubliez pas de préciser l’argument type="class" pour préciser que vous faites de la classification. Stockez ces valeurs prédites dans le vecteur pred.app.
    Attention, la fonction predict()est une fonction générique. Dans ce cas, vous utilisez la fonction predict() appliquée à un objet rpart. Pour avoir plus d’informations sur les arguments de la fonction, vous devez utiliser l’aide de la fonction predict.rpart().
  • A l’aide de la fonction table(), calculez la matrice de confusion entre les données prédites sur l’échantillon d’apprentissage (contenues dans le vecteur pred.app) et les vraies valeurs (contenues dans la colonne cancer.type du data.frame mat.app).
Confusion table of the CART model for the predictions obtained with the training set (learning errors).
Luminal.A no.Luminal.A
Luminal.A 253 15
no.Luminal.A 27 179
  • Calculez l’accuracy du modèle sur les données de l’apprentissage
[1] 0.9113924
  1. En utilisant la même procédure que celle utilisée pour calculer l’accuracy sur le jeu d’apprentissage, calculez l’accuracy du modèle sur l’échantillon test
Confusion table for the predictions obtained from the testing set.
Luminal.A no.Luminal.A
Luminal.A 104 24
no.Luminal.A 38 72
[1] 0.7394958

En comparant les performances obtenues sur l’échantillon d’apprentissage et de test, vous constatez que les performances obtenues sur l’échantillon d’apprentissage (Acc=0.91) sont plus grandes que celles obtenues sur l’échantillon test (Acc=0.74). Ainsi, vous observez un phénomène de sur-apprentissage. Le modèle apprend très bien les données de l’échantillon d’apprentissage, mais prédit moins bien les données du jeu test.
Pour diminuer ce sur-apprentissage, une des solutions serait d’élaguer l’arbre, c’est-à-dire d’enlever certaines branches. Ainsi, le nouveau modèle obtenu serait moins performant sur les données d’apprentissage, mais plus performant sur les données du jeu test.

5 Prédiction du type de cancer en utilisant une approche de random forest

  1. A partir des données de l’échantillon d’apprentissage, construisez une forêt aléatoire permettant de prédire le type de cancer (2 types) en fonction de l’expression des gènes.
  • Pour cela, utilisez la fonction randomForest() de la librairie randomForest avec les paramètres mtry et mtree par défaut. Stockez le modèle dans l’objet rf.fit.
  • Affichez à l’écran le modèle créé.

Call:
 randomForest(formula = cancer.type ~ ., data = mat.app) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 31

        OOB estimate of  error rate: 18.35%
Confusion matrix:
             Luminal.A no.Luminal.A class.error
Luminal.A          261           19  0.06785714
no.Luminal.A        68          126  0.35051546
Confusion table obtained by Random Forest on the training set (learning errors).
Luminal.A no.Luminal.A class.error
Luminal.A 261 19 0.0678571
no.Luminal.A 68 126 0.3505155
  1. Choix de la valeur du paramètre ntree.
  • L’objet rf.fit créé est une liste qui contient plusieurs éléments. L’élement err.rate contient les erreurs commises par le modèle contenant \(m\) arbres Représentez le taux d’erreur (Misclassification Rate) en fonction du nombre d’arbres présentant dans la forêt.
Random forest: impact of the number of tree on the misclassification error rate (MER)

Random forest: impact of the number of tree on the misclassification error rate (MER)

  • A partir de ce graphique, choisissez le nombre d’arbres optimal, noté \(ntree_{opt}\).
  1. Choix de la valeur optimale pour le paramètre mtry.

Remarque : cette étape est coûteuse en temps de calculs.

Pour trouver la valeur optimale de mtry, vous allez calculer plusieurs modèles en variant la valeur du paramètre mtry. Pour chaque modèle l’erreur commise par le modèle sera stockée dans un vecteur. La valeur optimale de mtry correspondra à la valeur du mtry du modèle donnant le plus faible taux d’erreur.

  • Calculez les modèles pour des valeurs de mtry de 15, 30, 62, 124, 248, 350, 500, et la valeur de ntree optimale. Le taux d’erreur de chaque modèle sera stockée dans le vecteur v.err.
  • Représentez graphiquement les erreurs commises par les modèles en fonction de la valeur de mtry.

  • A partir de ce graphique, déterminez la valeur optimale de mtry.
  1. Calcul du modèle avec les paramètres optimaux.
  • Calculez le modèle random forest sur l’échantillon d’apprentissage en utilisant les valeurs optimales des paramètres mtry et ntree. Dans la fonction randomForest(), ajouter l’argument importance=TRUE. Cet argument vous permettra de stocker l’importance des variables.
  • Visualisez le modèle et la table de confusion obtenue sur les échantillons OOB.

Call:
 randomForest(formula = cancer.type ~ ., data = mat.app, ntree = ntree.opt,      mtry = 248, importance = TRUE) 
               Type of random forest: classification
                     Number of trees: 200
No. of variables tried at each split: 248

        OOB estimate of  error rate: 18.35%
Confusion matrix:
             Luminal.A no.Luminal.A class.error
Luminal.A          252           28   0.1000000
no.Luminal.A        59          135   0.3041237
  1. Calcul des performances du modèle random forest

Pour comparer les performances de ce modèle, avec le modèle CART calculé précédemment, il faut calculer l’accuracy du modèle rf.fit sur les données des échantillons d’apprentissage et de test.

  • Calculez l’accuracy du modèle sur les données de l’apprentissage
              
pred.app       Luminal.A no.Luminal.A
  Luminal.A          280            0
  no.Luminal.A         0          194
[1] 1
  • Calcul de l’accuracy sur l’échantillon test
              
pred.test      Luminal.A no.Luminal.A
  Luminal.A          126           30
  no.Luminal.A        16           66
[1] 0.8067227
  1. Comparez les performances des modèles de CART et de Random forest.

  2. Etude de l’importance des variables (ici les gènes) dans le modèle.

  • Représentez graphiquement l’importance de chaque gène en utilisant la fonction varImpPlot()

  • Identifiez les gènes qui permettent de différentier le cancer Luminal.A des autres cancers.

  • Pour chaque gene sélectionné, tracez la distribution de l’expression du gène chez les patients atteints d’un cancer de type Luminal.A et chez les autres patients d’après les données d’apprentissage.

  • Représentez la matrice des données en focalisant sur les gènes sélectionnées et en utilisant une heatmap.

6 Prédiction du type de cancer en utilisant les Support Vecteur Machines

  • utilisation avec formule R
  • utilisation classique
  • erreur d’apprentissage avec les paramètres par défaut
  • surapprentissage avec gaussiennes très resserrées
  • surapprentissage avec cost élevé
  • évaluation d’erreur de test (en surapprentissage)
  • évaluation d’erreur de test (avec paramètres par défaut)

7 Prédiction des échantillons classés comme “Unclassified”

Lors de l’étude du jeu de données initial, vous avez déterminé que 107 échantillons avaient été classés comme “Unclassified”. En utilisant les modèles de random forest et de SVM, prédisez le type de cancer pour ces individus. Comparez les résultats obtenus avec les deux modèles.

  • Prédiction du type de cancer en utilisant le modèle random forest
pred.uncl.rf
   Luminal.A no.Luminal.A 
          54           53 
  • Prédiction du type de cancer en utilisant le modèle SVM
pred.uncl.svm
   Luminal.A no.Luminal.A 
          67           40 
  • Calcul de la table de confusion entre les deux vecteurs de prédiction
              pred.uncl.svm
pred.uncl.rf   Luminal.A no.Luminal.A
  Luminal.A           54            0
  no.Luminal.A        13           40

8 Prédiction des 4 types de cancer

  1. Préparation du jeu de données

Créez un nouveau data.frame (df.data.4) qui contient les données d’expression de gènes contenu dans le data.frame BIC.expr.4 et le type de cancer pour chaque échantillon (définit en 4 types).

  1. Préparation des échantillons d’apprentissage et de test
  • En reprenant les individus sélectionnés pour la création de l’échantillon d’apprentissage ind.app, créez les data.frames mat.app.4 et mat.test.4 qui contiennent les données de l’échantillon d’apprentissage et celui de test.
[1] 474 965
  • Préparez l’échantillon test
[1] 238 965
  1. Déterminez les paramètres mtry et ntree optimaux pour le random forest permettant de prédire les 4 types de cancer.
  • Déterminez la valeur optimale du paramètre ntree

  • Déterminez la valeur optimale du paramètre mtry.

  1. Calculez le modèle avec les paramètres optimaux.
    Calculez à nouveau le modèle sur l’échantillon d’apprentissage en utilisant les valeurs optimales des paramètres mtry et ntree. Dans la fonction randomForest(), ajouter l’argument importance=TRUE.
  • Visualisez le modèle et la table de confusion obtenue sur les échantillons OOB.

Call:
 randomForest(formula = cancer.type ~ ., data = mat.app.4, ntree = 150,      mtry = 124, importance = TRUE) 
               Type of random forest: classification
                     Number of trees: 150
No. of variables tried at each split: 124

        OOB estimate of  error rate: 22.57%
Confusion matrix:
           Basal.like HER2pos Luminal.A Luminal.B class.error
Basal.like         75       0        14         0  0.15730337
HER2pos             5       6        11         8  0.80000000
Luminal.A           3       0       274         3  0.02142857
Luminal.B           0       0        63        12  0.84000000
  1. Calculez les performances du modèle random forest sur l’échantillon d’apprentissage et de test.
  • Calcul de l’accuracy sur l’échantillon d’apprentissage.
            
pred.app.4   Basal.like HER2pos Luminal.A Luminal.B
  Basal.like         89       0         0         0
  HER2pos             0      30         0         0
  Luminal.A           0       0       280         0
  Luminal.B           0       0         0        75
[1] 1
  • Calcul de l’accuracy sur l’échantillon test
            
pred.test.4  Basal.like HER2pos Luminal.A Luminal.B
  Basal.like         31       4         2         1
  HER2pos             3       2         0         0
  Luminal.A           8       2       139        34
  Luminal.B           0       3         1         8
[1] 0.7563025
  1. Etude de l’importance des descripteurs dans le modèle.
  • Représentez graphiquement la valeur d’importance des différents gènes en utilisant la fonction varImpPlot()