自带数据的arules包中的ruleInduction

时间:2015-10-06 20:37:28

标签: r apriori arules

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

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

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

  

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 <- as(data, "transactions"),我也一样。

  

“asMethod(object)中的错误”

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

1 个答案:

答案 0 :(得分:0)

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

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

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