它易于使用来自包arules的apriori算法:
import rpy2.interactive as r
arules = r.packages.importr("arules")
from rpy2.robjects.vectors import ListVector
od = OrderedDict()
od["supp"] = 0.0005
od["conf"] = 0.7
od["target"] = 'rules'
result = ListVector(od)
my_rules = arules.apriori(dataset, parameter=result)
但是,apriori子集在子集参数中使用不同的格式:
rules.sub <- subset(rules, subset = rhs %in% "marital-status=Never-married" & lift > 2)
可以将此子集函数与rpy2?
一起使用答案 0 :(得分:0)
如果在{R}包subset
中(重新)定义了arules
,则从arules
获取的对象importr
将包含它。在你的python代码中,这看起来像arules.subset
。
参数subset
是一个略有不同的故事,因为它是一个R表达式。有几种方法可以解决这个问题。其中之一是将其包装在ad-hoc R函数中。
from rpy2.robjects import r
def mysubset(rules, subset_str):
return r("function(rules) { arules::subset(rules, subset = %s) }" % \
subset_str)
rules_sub = mysubset(rules,
"rhs %in% "marital-status=Never-married" & lift > 2)