2016-06-12 238 views
0

我有131个变量,其中我想要获取建模的重要变量。我对所有变量运行决策树,然后使用caret::varImp来计算变量的重要性,但输出不合适。以下是我的代码和输出。varImp函数没有给出正确的输出

VarImpModel <- rpart(Final_Churn_Flag~.,data=InputData, method = 'class') 
varImp(VarImpModel) 

       Overall 
OnnetAmount 35354.00 
TotalARPU  188.96940 
Onnet_Fix_AR 144.85092 
Age   2.59406 

所需的输出 - 我想要的是什么:

   Overall 
OnnetAmount 100.00 
TotalARPU  88.96 
Onnet_Fix_AR 44.85 
Age   22.59 

为什么它没有被绑定到100?如何做?

+0

是否添加参数'varImp(VarImpModel,scale = TRUE)'得到你以后的输出? – dww

+0

对varImp.rpart的帮助表明,此方法对类'rpart'不使用scale参数'## S3方法:varImp((object,surrogates = FALSE,competes = TRUE,...))'。如果您确定这是您想要的,您可以随时自行调整结果,但如果您这样做,可能会丢失一些对原始值有用的信息? – dww

回答

0

因为您已经在使用caret我建议您也从caret::train内训练您的模型,因为这给您提供了更多选择(例如在重采样中) - 并且作为副作用,根据需要缩放变量的重要性它:

> m <- train(x = iris[,1:4], y = iris[,5], method = 'rpart', trControl = trainControl('repeatedcv', number = 10, repeats = 20)) 
> varImp(m) 

rpart variable importance 

      Overall 
Petal.Width 100.00 
Petal.Length 97.57 
Sepal.Length 33.53 
Sepal.Width  0.00