R中的Apriori算法

时间:2017-06-21 16:03:06

标签: r algorithm apriori

我认为这是一个精心准备的数据集。我想在R中使用Apriori算法来寻找关联并提出一些规则。我有大约16,000行(唯一客户)和179列代表各种项目/类别。数据如下所示:

     Cat1  Cat2  Cat3  Cat4  Cat5 ... Cat179
     1,     0,    0,    0,    1,  ...  0
     0,     0,    0,    0,    0,  ...  1
     0,     1,    1,    0,    0,  ...  0
     ...

我认为每个客户都有一个带有二进制值(1/0)的逗号分隔文件,类别可以解决这个问题,但在我使用以下数据读取数据之后:

  

data5 = read.csv(" Z:/CUST_DM/data_test.txt" ;, header = TRUE,sep =",")

然后运行此命令:

  

rules = apriori(data5,parameter = list(supp = .001,conf = 0.8))

我收到以下错误:

Error in asMethod(object):
column(s) 1, 2, 3, ...178 not logical or a factor. Discretize the columns first.  

我理解Discretize但不是在这种情况下我猜。一切都是1或0.我甚至将数据从INT更改为CHAR并收到相同的错误。我也将客户ID(唯一)作为第1列,但据我所知,当数据采用这种形式时(平面文件),这是不必要的。我确信有一些显而易见的东西我不知道 - 我是R的新手。

我错过了什么?感谢您的输入。

2 个答案:

答案 0 :(得分:0)

我用这种方式解决了问题:在将数据读入R之后,我使用lapply()将数据更改为因子(我认为它的作用是什么)。然后我获取了该数据集并从中创建了一个数据框。然后我成功地应用了apriori()。

答案 1 :(得分:0)

您的数据实际上已经是(密集)矩阵格式,但../始终以read.csv的形式读取数据。只需先将数据强制转换为data.frame

matrix

数据中的1s将被解释为项目的存在,而0s将被解释为缺席。有关如何创建交易的更多信息,请参见手册页dat <- as.matrix(data5) rules <- apriori(dat, parameter = list(supp = .001,conf = 0.8))