1

我想知道在我的决策树模型中哪些变量很重要。

我通过使用 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() ,因为它会自动应用交叉验证等。

请帮我。

4

0 回答 0