2015-11-10 8 views
0

Это простое в использовании априорной алгоритм из пакета arules как:Используя подмножество из пакета arules в rpy2

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?

+0

Это проще, если этот пример является автономным (например, вот что именно состоит из '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''). R 'subset' работает, но вы можете найти интерфейс к' dplyr' интересному: http://rpy2.readthedocs.org/en/version_2.7.x/lib_dplyr.html#dataframes-and-dplyr (используйте 'filter 'вместо' subset') – lgautier

+0

@lgautier Я считаю, что пакет arules переопределяет подмножество из подмножества R, поэтому использует этот синтаксис. Я увижу фильтр dplyr. Благодарю. – Belgrades

ответ

0

Если subset (re) определено в R-упаковке arules, объект arules, полученный от importr, будет содержать его. В вашем коде на Python это будет выглядеть как arules.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) 

 Смежные вопросы

  • Нет связанных вопросов^_^