1

运行此示例的代码时,我在最后一行收到以下错误:

矩阵中的错误(平均值(范围),ncol = ncol(x),nrow = nrow(x),dimnames = dimnames(x)):非数字矩阵范围

但是,我记得几个月前看到过其他案例,其中库 arulesViz 使用分类数据类型。

landing.data=read.csv2("http://archive.ics.uci.edu/ml/machine-learning-databases/shuttle-landing-control/shuttle-landing-control.data", 
                           sep=",", header=F, dec=".")
    landing.data=as.data.frame(sapply(landing.data,gsub,pattern="\\*",replacement=10))
    library(arules)
    landing.system <- as(landing.data, "transactions")
    rules <- apriori(landing.system, parameter=list(support=0.01, confidence=0.6))
    rulesLandingManual <- subset(rules, subset=rhs %in% "V1=1" & lift>1.2)
    library(arulesViz)
    plot(head(sort(rulesLandingManual, by="confidence"), n=3),
         method="graph",control=list(type="items"))
4

3 回答 3

2

traceback()运行代码后执行以下操作:

6: matrix(mean(range), ncol = ncol(x), nrow = nrow(x), dimnames = dimnames(x))
5: map(m, c(5, 20))
4: graph_arules(x, measure = measure, shading = shading, control, 
       ...)
3: plot.rules(head(sort(rulesLandingManual, by = "confidence"), 
       n = 3), method = "graph", control = list(type = "items"))
2: plot(head(sort(rulesLandingManual, by = "confidence"), n = 3), 
       method = "graph", control = list(type = "items"))
1: plot(head(sort(rulesLandingManual, by = "confidence"), n = 3), 
       method = "graph", control = list(type = "items"))

所以,基本上错误来自6:. 该错误意味着任何参数matrix(.)都不是数字。为了说明这一点:

> matrix(1:4, ncol=2)

#      [,1] [,2]
# [1,]    1    3
# [2,]    2    4

> matrix(1:4, ncol="x")
# Error in matrix(1:4, ncol = "x") : non-numeric matrix extent

你看到错误了吗?我认为随着包的扩展和类的对象,graph您在这里无能为力。因此,这可能与开发人员方面有很大关系。如果确实如此,可能值得写/联系开发人员。mapmatrixrules

于 2013-02-10T11:30:20.413 回答
0

我在挖掘规则的一些数据上遇到了完全相同的问题,在做了一些测试后,我发现这个错误来自于使用 sort() 和 head() 命令,当有更多规则满足条件时质量措施超出要求。

例如,在您的代码中,您要求在 rulesLandingManual 中绘制 3 个置信度最高的规则,但是如果您检查(rulesLandingManual),您会发现有 216 个置信度为 1(最大置信度)的规则,因此,当您要求对顶部进行子集化时n (n 小于 217),在这个新规则对象中生成的矩阵变得混乱,至少对于 plot 函数中的 graph 方法。

为了测试我正在解释的内容,在您的代码中,将 n 更改为 217 到 224 之间的任何值(224 是 rulesLandingManual 中的规则数),它将绘制图形,而 n = 216 或更少将导致上述错误。

我不知道这是打算以这种方式工作还是它是一个错误,我现在正试图弄清楚,所以解释会非常方便。

于 2013-02-17T02:59:09.397 回答
-1

range是一个函数。你的意思是mean(range(x)), ...

平均意思。呵呵。

于 2013-02-10T09:33:08.723 回答