【问题标题】:Own data in the arules package for ruleInduction用于 ruleInduction 的 arules 包中的自己的数据
【发布时间】:2015-10-06 20:37:28
【问题描述】:

我有一个 7 列的 excel 文件。前三个是数字,第 4-7 列是分类的。我将它保存到一个 txt 文件中并将其加载到 R 中(使用 RStudio,单击环境中的“导入数据集”按钮),它启动了以下命令

data <- read.table("~/csectiondata.txt", quote="\"", comment.char="")*

现在,我一直在尝试使用 apriori(data),这是我得到的错误:

asMethod(object) 中的错误: 第 1、2、3 列不符合逻辑或因素。使用 as.factor、as.logical 或先分类。

我读到使用 sapply 和 as.factor 会有所帮助,所以我这样做了:

data <- sapply(data, as.factor)*

但现在我收到了这个错误:

t(as(from, "ngCMatrix")) 中的错误: 在为函数“t”选择方法时评估参数“x”时出错:asMethod(object) 中的错误:无法将“NA”强制转换为“nsparseMatrix”

我也尝试过transaction_data &lt;- as(data, "transactions"),我也得到了同样的结果。

“asMethod(object) 中的错误”

我完全迷路了。有人可以帮帮我吗?

【问题讨论】:

  • 尝试将一些数据添加到问题中。试试dput(head(data))。如果我们能自己找到问题,帮助会容易得多

标签: r apriori arules


【解决方案1】:

您需要先准备好数据。关联规则挖掘只能使用项目,不适用于连续变量。

例如,描述一个人的项目(即,被认为称为交易的对象)可能是。人高的事实将被编码在包含项目 tall 的事务中。这通常通过TRUE 值在逐项交易矩阵中进行编码。这就是as.transaction 可以处理逻辑列的原因,因为它假定列代表一个项目。该函数还可以将具有标称值(即因子)的列转换为一系列二进制项(每个级别一个)。因此,如果您有名义变量,那么您需要使用 data[,"a_nominal_var"] &lt;- factor(data[,"a_nominal_var"]) 之类的东西来确保它们是因子(而不是字符或数字)。

需要首先离散化连续变量。离散化产生的项目可能是age>18,并且该列仅包含TRUEFALSE。或者,它可以是 age、50=>age>18age>50 级别的因素。这些将自动转换为 3 个项目,每个级别一个。看看 arules 中的函数discretize()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多