2016-07-26 56 views
0

我有这样的数据data redundant。所以,我想通过唯一代码删除冗余项目,然后我得到了像this这样的数据。然后我尝试通过arules获得规则。Arules为apriori算法获得0条规则,但是为什么?

library(arules) 
library(qpcR) 
data<- read.csv("Book1.csv", header=TRUE) 
b<-sapply(1:ncol(data), function(x) unique(data[,x])) 
b<-lapply(b,as.data.frame) 
a<-list() 
databaru<-do.call(qpcR:::cbind.na, lapply(b, as.vector)) 
databaru[]<-lapply(databaru,as.factor) 
colnames(databaru)<-colnames(data) 
rules<-apriori(databaru, parameter=list(supp=0.0016, conf=0.1)) 
inspect(rules) 

然后当我尝试运行它,我得到0的规则,我相信我删除之前,他冗余项目的每一列,我得到了很多的规则,但是,当我尝试运行代码,并删除代码删除多余的项目,我也得到了0规则..(冗余:我使用代码“独特”) 然后我尝试支持和信心给予较低的价值,但我仍然没有得到它。

Apriori 

Parameter specification: 
confidence minval smax arem aval originalSupport support minlen maxlen target ext 
     0.1 0.1 1 none FALSE   TRUE 0.0016  1  10 rules FALSE 

Algorithmic control: 
filter tree heap memopt load sort verbose 
0.1 TRUE TRUE FALSE TRUE 2 TRUE 

Absolute minimum support count: 4 

set item appearances ...[0 item(s)] done [0.00s]. 
set transactions ...[34440 item(s), 2561 transaction(s)] done [0.02s]. 
sorting and recoding items ... [0 item(s)] done [0.00s]. 
creating transaction tree ... done [0.00s]. 
checking subsets of size 1 done [0.00s]. 
writing ... [0 rule(s)] done [0.00s]. 
creating S4 object ... done [0.00s]. 

我该怎么办?怎么了?发生了什么?非常感谢您的帮助

+0

我想至少你的'as.factor'是一个有罪的步骤(如果不是其他的)。对于每列,代码将使用不同的值进行编码。我会在调用中精确设置可能的级别,或者 - 更简单 - 保留原始值。 –

+0

如果我没有改变它的因子,我不能做运行arules。所以我该怎么做?因为当我删除它时,它会给出错误,因为我应该离散它。 但是如何?因为我的数据是整数,但它们不是可变的,它们是ID。 – ILoveThisName

+0

您可能会开始首先检索所有唯一值,例如使用'levels < - unique(unlist(databaru))'并在创建factor时使用此向量:'lapply(databaru,as.factor,levels = levels)'(不是因为你没有提供一些数据来测试) –

回答

0

关联规则挖掘需要(二进制)项目而不是数字(连续)变量。您需要离散数据中的每个数字变量。参见包的? discretize