0

使用包 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)

但是,先验子集在子集参数中使用了不同的格式:

rules.sub <- subset(rules, subset = rhs %in% "marital-status=Never-married" & lift > 2)

可以将这个子集函数与 rpy2 一起使用吗?

4

1 回答 1

0

如果subset在 R 包中(重新)定义,则从中获取arules的对象将包含它。在您的 python 代码中,这看起来像.arulesimportrarules.subset

该参数subset是一个稍微不同的故事,因为它是一个 R 表达式。可以有几种方法来解决这个问题。其中之一是将它包装在一个特别的 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)
于 2015-11-18T04:06:49.793 回答