我想知道在我的决策树模型中哪些变量很重要。
我通过使用 caret 包的 train() 得到了模型。但是对于因子变量,属性使用的结果很奇怪。
下面是我的代码。
set.seed(123)
ctrl <- trainControl(method = "cv", classProbs = TRUE, summaryFunction=twoClassSummary)
mDt <- train(metS ~ ., data= df_train, method = "C5.0", metric="ROC", trControl = ctrl); mDt
我通过使用 C5imp() 获得了属性用法。(使用summary(mDt)的结果是一样的。)
C5imp(mDt$finalModel)
属性使用结果如下:
- 年龄 100.00
- 体重指数 100.00
- 身高 100.00
- 体重 100.00
- 工作7 98.90
- piHeatScore 83.81
- dailyAlcoholIntake_final 82.96
- pi4.L 67.14
- 家庭收入^9
- pi17.C 60.33
- pi6.C 59.72
- pi13.L 56.53
- ...
奇怪的是,一个因子变量(例如'pi4':Ord.factor w/5 个级别“1”<“2”<“3”<“4”<“5”)具有多种属性用法。(例如'pi4.L'、'pi4.Q'、'pi4.C'、'pi^4')
无序因子也是如此。例如,'marriage' 是一个因子 w/ 6 个级别(“1”、“2”、“3”、“4”、“5”、“6”),并且属性用法显示为 'marriage2', “marriage3”、“marriage4”、“marriage5”和“marriage6”。
但是,结果应如下所示:
(下面的结果是使用 C5.0() 与相同的数据获得的。显示了一个因素变量的一个属性用法。)
mTemp <- C5.0(df_train[,-1], df_train$metS)
C5imp(mTemp)
- 体重指数 100.00
- 年龄 32.37
- pi6 27.28
- pi13 16.92
- pi9 15.76
- 工作 9.07
- pi14 2.88
- ...
我认为这是由 C5.0() 和 train() 应用 C5.0 方法时的差异引起的。
我想使用 caret 包的 train() ,因为它会自动应用交叉验证等。
请帮我。