R 中的数据挖掘算法/包/RWeka/Weka 分类树
R 对 Weka 回归和分类树学习器的接口。
J48(formula, data, subset, na.action, control = Weka_control(), options = NULL)
LMT(formula, data, subset, na.action, control = Weka_control(), options = NULL)
M5P(formula, data, subset, na.action, control = Weka_control(), options = NULL)
DecisionStump(formula, data, subset, na.action, control = Weka_control(), options = NULL)
formula,要拟合的模型的符号描述。
data,一个可选的数据框,包含模型中的变量。
subset,一个可选的向量,指定在拟合过程中要使用的观测值子集。
na.action,一个函数,指示当数据包含 NA 时应该发生什么。
control,一个 Weka_control 类的对象,用于将选项传递给 Weka 学习器。
options,一个命名的进一步选项列表,或 NULL(默认)。
有一个用于从拟合的模型中预测的 predict 方法,以及一个基于 evaluate_Weka_classifier 的 summary 方法。对于拟合的二元 Weka_tree,还有一个 plot 方法,通过包 party 提供的功能实现。这将 Weka_tree 转换为 BinaryTree,然后简单地调用此类的 plot 方法(参见 plot.BinaryTree),并对默认参数进行一些修改。如果 Weka 分类树学习器实现了“Drawable”接口(即提供了 graph 方法),则可以使用 write_to_dot 创建树的 DOT 表示,以便通过 Graphviz 或 Rgraphviz 包进行可视化。
J48 生成未修剪或修剪的 C4.5 决策树 (Quinlan, 1993)。
LMT 实现“Logistic Model Trees” (Landwehr, 2003; Landwehr 等人,2005)。
M5P(其中“P”代表“prime”)使用 M5' 算法生成 M5 模型树,该算法在 Wang & Witten (1997) 中引入,并通过 Quinlan(1992) 增强了原始的 M5 算法。
DecisionStump 实现决策树桩(只有一个拆分的树),这些树桩经常用作元学习器(如 Boosting)的基础学习器。
模型公式应仅使用“+”和“-”运算符分别表示要包含或不包含的变量。参数选项允许进一步自定义。当前,选项模型和实例(或这些选项的部分匹配)被使用:如果设置为 TRUE,则模型框架或相应的 Weka 实例分别包含在拟合的模型对象中,这可能会加快随后对该对象的计算。默认情况下,两者都不包含。
继承自 Weka_tree 和 Weka_classifiers 类的列表,包含以下组件:
classifier,一个对 Java 对象的引用(jobjRef 类),该对象是通过应用 Weka
buildClassifier,方法使用给定的控制选项构建指定的模型。
predictions,一个数值向量或因子,包含训练实例的模型预测(对构建的分类器和每个实例调用 Weka classifyInstance 方法的结果)。
call,匹配的调用。
m1 <- J48(Species ~ ., data = iris) summary(m1) table(iris$Species, predict(m1)) if(require("party", quietly = TRUE)) plot(m1) write_to_dot(m1) library("Rgraphviz") ff <- tempfile() write_to_dot(m1, ff) plot(agread(ff)) DF2 <- read.arff(system.file("arff", "contact-lenses.arff", package = "RWeka")) m2 <- J48(`contact-lenses` ~ ., data = DF2) table(DF2$`contact-lenses`, predict(m2)) if(require("party", quietly = TRUE)) plot(m2) DF3 <- read.arff(system.file("arff", "cpu.arff", package = "RWeka")) m3 <- M5P(class ~ ., data = DF3) if(require("party", quietly = TRUE)) plot(m3) DF4 <- read.arff(system.file("arff", "weather.arff", package = "RWeka")) m4 <- LMT(play ~ ., data = DF4) table(DF4$play, predict(m4)) if(require("mlbench", quietly = TRUE) && require("party", quietly = TRUE)) { data("PimaIndiansDiabetes", package = "mlbench") m5 <- J48(diabetes ~ ., data = PimaIndiansDiabetes, control = Weka_control(R = TRUE)) plot(m5) }