R Weka J48 决策树无法处理数字 class

R Weka J48 Decision Tree Cannot handle numeric class

我在网上找到了这个文档: https://www.erpublication.org/admin/vol_issue1/upload%20Image/IJETR032129.pdf

它在第 4 页使用 RWeka 包和 R 中的 J48 函数构建决策树。在他的示例中,他同时具有数值和分类值。

因此,我做了一个测试,仅在列上尝试预测另一个。这是一个示例:

VALUE CHURNED_F
    2         1
    2         0
    2         0
    2         0
    2         0
    1         0

这是我的代码:

m2 <- J48(`CHURNED_F` ~ ., data = head(train[, -c(1)]))

但是我得到这个错误:

Error in .jcall(o, "Ljava/lang/Class;", "getClass") : 
  weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.j48.C45PruneableClassifierTree: Cannot handle numeric class!

我不明白错误,首先它是一个绝对的class。其次,在文档的示例中,它完美地同时使用了分类列和数字列。

我怎样才能让它工作?

J48 要求 class 是分类的,或者在 R 的情况下是一个因子。我相信您的 "Churned_F" 变量是数字的。您可以使用结构函数检查变量的类型:

str(train)  

下面的代码允许您构建 J48 树。在这里我确保 "CHURNED_F" 是一个因素。

library(RWeka)
train <- data.frame(VALUE = c(2,2,2,2,2,1), CHURNED_F = factor(c(1,0,0,0,0,0)))
m2 <- J48(CHURNED_F ~., data = train)

这意味着,您的答案栏必须由字符而不是数值表示。您可以使用此方法更改它:

Wine$X1=factor(Wine$X1,levels = c(1,2,3),labels = c("Uno","Dos","Tres"))

Wine 是我的数据集。 X1 是我的答案栏。 1、2、3是答案。 Uno、Dos、Tres是数值解析后想要的答案