我正在尝试从R语言中的c50包构建的模型中导出模型。
我使用partykit包来提取最后一次试验,但它返回的拟合值与原值不一致。
我不明白为什么as.party.c5.0函数的拟合方式与C5.0函数不完全相同。它对第一次试验有效,但对其他试验无效。
例如:
poc_db<-irisfullTree_prun_iris_Winow <- C5.0(Species ~ ., data =poc_db, trials = 10,control = C5.0Control(CF = 0.90,noGlobalPruning = FALSE,winnow = T))cat(fullTree_prun_iris_Winow$output)----- Trial 9: -----Decision tree:Petal.Width <= 0.6: setosa (10.5) Petal.Width > 0.6::...Petal.Width <= 1.7: versicolor (116.3/49.4) Petal.Width > 1.7: virginica (22.2)modParty <- C50:::as.party.C5.0(fullTree_prun_iris_Winow,trial=10)Fitted party:[1] root| [2] Petal.Width <= 0.6: setosa (n = 50, err = 0.0%)| [3] Petal.Width > 0.6| | [4] Petal.Width <= 1.7: versicolor (n = 54, err = 9.3%)| | [5] Petal.Width > 1.7: virginica (n = 46, err = 2.2%)
我们应该对第四个节点有:… versicolor(116/49)
感谢帮助
回答:
第四个节点有54个观测值,其中49个是versicolor。参见
table(subset(poc_db, Petal.Width > 0.6 & Petal.Width <= 1.7)$Species)## setosa versicolor virginica ## 0 49 5
因此,partykit
报告n = 54
和err = 9.3%
,对应于5/54
。由C5.0
报告的值不同,因为它是通过多次试验的提升树得出的,而不是仅使用单棵树本身。