2017-10-17 7 views
0

J'ai un arbre de classification faite parctree. Mettez le numéro de noeud de classification dans la variable

library(party) 
model.cart <- ctree(qtcf ~ ., data=training) 

Dans mon cas, je voudrais créer une nouvelle variable dans mon jeu de formation (formation) et des tests ensemble (test) indiquant le noeud terminal nombre pour l'observation particulière.

De toute évidence, il pourrait être fait manuellement comme ceci:

training$ctreegroup[((training$sex == 'female') & (training$rs12143842.y>0) 
        & (training$rs735951>0))] <- 'node14' 
testing$ctreegroup[((testing$sex == 'female') & (testing$rs12143842.y>0) & 
         (testing$rs735951>0))] <- 'node14' 

Mais est-il une façon intelligente de faire cela automatiquement sans programmation manuellement toutes les décisions?

+0

Je pense que la fonction 'WHERE' dans' bibliothèque (fête) 'aidera. 'where (model.cart)' – shuckle

+0

Merci. Je ne pouvais pas voir la fonction dans la documentation de la partie mais l'entraînement $ node_placement <- où (model.cart) fonctionnait. –

Répondre

0

Comme le suggère Shuckle

training$node_placement <- where(model.cart) 

travaillé pour l'ensemble de la formation. Unforunately il ne fonctionne pas sur l'ensemble de test, comme

testing$node_placement <- where(model.cart) 

produit l'erreur

Error in `$<-.data.frame`(`*tmp*`, ctreegroup, value = c(22L, 22L, 23L, : 
    replacement has 4440 rows, data has 1478 

donc la fonction où ne réexamine pas les données

+0

try 'predict (model.cart, newdata = testing, type =" node ")' – shuckle

+0

Cela a résolu mon problème. Tx –