2017-10-12 2 views
0

Existe-t-il un moyen d'accéder aux données après avoir effectué une étape de prétraitement en utilisant un wrapper dans mlr? Voici une version dénudée du code:mlr - Accès aux données entre ou après les étapes de prétraitement

library(mlr) 
library(mlbench) 

data <- BreastCancer[, 2:11] 
lrn <- makeLearner(cl = "classif.ranger", 
         predict.type = "prob", 
         fix.factors.prediction = TRUE, 
         importance = "permutation") 

lrn <- makeImputeWrapper(lrn, classes = list(integer = imputeMedian(), 
                numeric = imputeHist(), 
                factor = imputeMode())) 

lrn <- makeRemoveConstantFeaturesWrapper(lrn, na.ignore = TRUE) 

classif.task <- makeClassifTask(data = rawdata, target = "Target", positive = "1") 

model <- train(lrn, classif.task) 

Le code définit un apprenant, supprime constantes et effectue l'imputation. Existe-t-il un moyen de voir à quoi ressembleront les données après la suppression des caractéristiques constantes ou, fait plus intéressant, après l'imputation?

Répondre

1

Ceci n'est pas implémenté pour l'instant - le but des wrappers est de tout encapsuler pour ne pas avoir à vous soucier des étapes intermédiaires.

Vous pouvez toutefois utiliser la fonction impute() pour effectuer la même imputation séparément (et de la même manière pour la suppression des caractéristiques constantes). Voir the tutorial pour plus d'informations.

+0

Merci pour la réponse rapide. La raison pour laquelle j'utilise les emballages, par ex. Les fonctions personnalisées, non mentionnées ci-dessus, consistent à consolider le code d'entraînement et de notation dans une fonction en passant des arguments entre les deux (en plus d'effectuer un réglage d'hyperparamètre si nécessaire). Cependant, tester/déboguer le code dans le "vrai" flux de travail est souvent aussi utile que d'utiliser des tests unitaires. ** Et ** il y a des cas où un troisième paquet, par ex. Dans mon cas, le xgboostExplainer (https://medium.com/applied-data-science/new-r-package-the-xgboost-explainer-51dd7d1aa211), nécessite les données d'entraînement prétraitées. – notiv

+1

Si vous avez écrit PreprocessingWrappers personnalisé (http://mlr-org.github.io/mlr-tutorial/devel/html/preproc/index.html#preprocessing-wrapper-functions), vous pouvez simplement stocker des éléments dans l'environnement global (< <-) ou écrire des choses sur le disque dans le train et prédire les fonctions. –

+0

Merci @jakobr, c'est un bon conseil en fait! – notiv