R-有没有办法通过升力限制先验规则?

时间:2016-10-14 01:44:30

标签: r apriori

我正在查看此数据集:chained-indexing

我预处理了数据:

ca.1<-read.csv("CreditApproval.csv",T,",")

# From http://stackoverflow.com/q/4787332/
remove_outliers <- function(x, na.rm = TRUE, ...) {
  qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
  H <- 1.5 * IQR(x, na.rm = na.rm)
  y <- x
  y[x < (qnt[1] - H)] <- NA
  y[x > (qnt[2] + H)] <- NA
  y
}

ca.1$A2<-remove_outliers(ca$A2)
ca.1$A3<-remove_outliers(ca$A3)
ca.1$A8<-remove_outliers(ca$A8)
ca.1$A11<-remove_outliers(ca$A11)
ca.1$A14<-remove_outliers(ca$A14)
ca.1$A15<-remove_outliers(ca$A15)
ca.1$A2<-discretize(ca.1$A2,"frequency",categories = 6)
ca.1$A3<-discretize(ca.1$A3,"frequency",categories = 6)
ca.1$A8<-discretize(ca.1$A8,"frequency",categories = 6)
ca.1$A11<-discretize(ca.1$A11,"frequency",categories = 6)
ca.1$A14<-discretize(ca.1$A14,"frequency",categories = 6)
ca.1$A15<-discretize(ca.1$A15,"frequency",categories = 6)

ca.1<-na.omit(ca.1)

微调支持后,自信,min / maxlen我仍然有65条规则:

> rules<-apriori(ca.1, parameter= list(supp=0.15, conf=0.89, minlen=3, maxlen=4), appearance=list(rhs=c("class=-", "class=+"), default="lhs"))
> rules.sorted <- sort(rules, by="lift")
> inspect(rules.sorted)
     lhs                     rhs       support   confidence lift    
[1]  {A5=g,A9=t,A10=t}    => {class=+} 0.1521739 0.8974359  2.770607
[2]  {A4=u,A9=t,A10=t}    => {class=+} 0.1521739 0.8974359  2.770607
[3]  {A1=a,A9=f}          => {class=-} 0.1717391 0.9753086  1.442579
[4]  {A1=a,A9=f,A13=g}    => {class=-} 0.1608696 0.9736842  1.440176
...[65]

正如您所看到的那样,+规则比-规则具有更大的提升,但支持度和置信度更低。我一直在查看文档,并且无法通过提升找到任何限制参数。这可能吗?如果没有,你在这样的情况下做了什么?

5 个答案:

答案 0 :(得分:1)

arules 包中,有一个特殊功能可以子集定义此对象类型。 为了滤除提升值小于2的规则,您可以尝试以下操作:

subset(rules, subset = lift > 2)

答案 1 :(得分:0)

如果你尝试了怎么办?

apriori(df, parameter = list(lift = 0.3, minlen =2))

在这种情况下,您可以将最小升力设置为任何值,只需选择0.3。

答案 2 :(得分:0)

我认为apriori函数不会将lift作为参数之一。如果我尝试设置电梯,我会收到此错误

错误: 参数无效:提升

相反,我可以通过提升对规则进行排序,并根据提升值选择规则,如下所示

sort(规则,by =“lift”,减去= TRUE)

这不是一个简单的解决方案,而是一个不错的解决方法

答案 3 :(得分:0)

您不能仅凭电梯限制先验规则。您必须首先在此处进行支持信心以获取限制:

 rules<-apriori(ca.1, parameter= list(supp=0.15, conf=0.89, minlen=3, maxlen=4)

然后,执行类似的操作

rulesLift <- sort(subset(rules, subset = lift < 2), by="lift") 
inspect(rulesLift)

答案 4 :(得分:0)

另一种方法是使用import os listnumbers = '1.0,5.0,6.0,7.0,9.0,10.0' folder_root = '/path/to/your/folder' # in your case: C:\ArcGIS\Projects\Name folders = listnumbers.split(',') for f in folders: os.makedirs(os.path.join(folder_root, f)) 。例如:

arules::quality()

此功能可以按association.rules <- apriori(tr, parameter = list(support=0.005, confidence=0.25, minlen=3, maxlen=10)) subRules<-association.rules[quality(association.rules)$lift > 1] 进行过滤。