【问题标题】:How do I convert an "RWeka" decision tree into a "party" tree in R?如何将“RWeka”决策树转换为 R 中的“派对”树?
【发布时间】:2016-05-15 18:56:11
【问题描述】:

我正在使用 R 中的 RWeka 包将 M5' 树拟合到使用“M5P”的数据集。然后我想将生成的树转换为“派对”树,以便我可以访问变量重要性。我遇到的问题是我似乎无法让函数as.party 工作而不会出现以下错误:

"Error: all(sapply(split, head, 1) %in% c("<=", ">")) is not TRUE"

仅当我在 for 循环中应用函数时才会出现此错误,但 for 循环是必要的,因为我正在运行 5 折交叉验证。

下面是我一直在运行的代码:

n <- nrow(data)

k <- 5

indCV <- sample( rep(1:k,each=ceiling(n/k)), n)


for(i in 1:k){

#Training data is for all the observations where indCV is not equal to i

training_data <- data.frame(x[-which(indCV==i),])

training_response <- y[-which(indCV==i)]

#Test the data on the fifth of the data where the observation indices are equal to i

test_data <- x[which(indCV==i),]

test_response <- y[which(indCV==i)]

#Fit a pruned model to the training data

fit <- M5P(training_response~., data=training_data, control=Weka_control(N=TRUE))

#Convert to party

p <- as.party(fit)
}

【问题讨论】:

标签: r weka party


【解决方案1】:

RWeka 包有一个将M5P 树转换为party 对象的示例。如果您运行example("M5P", package = "RWeka"),那么树的可视化实际上是由partykit 绘制的。运行示例后,请参阅 plot(m3)as.party(m3)

但是,虽然对于 J48,您可以获得完全成熟的 constparty 对象,但对于 M5P,情况并非如此。在后一种情况下,树结构本身可以转换为party,但节点内的线性模型并不完全直接转换为lm 对象。因此,如果您想使用party 表示来计算仅依赖于树结构的度量(例如,用于拆分的变量、拆分数量、拆分点等),那么您可以这样做。但是,如果您想计算依赖于模型或预测的度量(例如,均方误差等),那么 party 类不会有太大帮助。

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 2020-08-16
    • 2023-03-19
    • 2016-05-18
    • 2014-08-21
    • 2011-11-18
    • 2017-02-21
    • 2017-02-11
    • 2014-08-20
    相关资源
    最近更新 更多