2017-10-12 87 views
0

我试图让R apriori算法允许我在lhs中同时指定多个属性。关于R Apriori的lhs的多个条件

rules <- apriori(Data, parameter=list(supp = 0.0001, conf = 0.001, minlen = 2), appearance = list(lhs = c("DiagnoseTekst=Acuut hartfalen"), default="rhs")) 

上面一行将筛选只是在一定DiagnoseTekst的LHS(在我的数据列是“MedicatieTekst”,“Geslacht”和“DiagnoseTekst”) 不过,我想这两个DiagnoseTekst过滤和Geslacht。当我投入

rules <- apriori(Data, parameter=list(supp = 0.0001, conf = 0.001, minlen = 2), appearance = list(lhs = c("DiagnoseTekst=Acuut hartfalen", "Geslacht=M"), default="rhs")) 

我得到了一些只有DiagnoseTekst和一些只与Geslacht规则。 (在这种情况下,大多数情况下都应该具有这两个属性)。有什么方法可以筛选搜索或结果,以便能够为lhs列指定多个条件?

的完整代码是明确的:输出的

Data <- as(data, "transactions") 

str(Data) 
rules <- apriori(Data, parameter=list(supp = 0.0001, conf = 0.001, minlen = 2), appearance = list(lhs = c("DiagnoseTekst=Acuut hartfalen"), default="rhs")) 
top.conf <- sort(rules, decreasing = TRUE, na.last = NA, by = c("confidence","lift")) 
set <- inspect(head(subset(top.conf), 30)) 

例子:

> set <- inspect(head(subset(top.conf), 30)) 
    lhs        rhs            support  confidence lift  count 
[1] {DiagnoseTekst=Acuut hartfalen} => {Geslacht=V}          0.066477566 0.525500378 1.1539592 30561 
[2] {DiagnoseTekst=Acuut hartfalen} => {Geslacht=M}          0.060025798 0.474499622 0.8712635 27595 
[3] {DiagnoseTekst=Acuut hartfalen} => {MedicatieTekst=FUROSEMIDE}      0.017917467 0.141636289 2.9290550 8237 
[4] {DiagnoseTekst=Acuut hartfalen} => {MedicatieTekst=METOPROLOL}      0.006279923 0.049642341 0.9877311 2887 
[5] {DiagnoseTekst=Acuut hartfalen} => {MedicatieTekst=PARACETAMOL}      0.005201003 0.041113557 0.6085413 2391 

回答

0

如果我理解正确的话,那么你要确保两个规定的项目必须在LHS发生的规则。外观只能限制规则中可能出现的项目,但并不是所有项目都必须存在。但是,您可以使用subset进行过滤来解决此问题。下面的代码中找到与使用%ain%在规则的LHS项目“年龄=高级”和“性别=男”的所有规则(都在,见? "%ain%"

> library("arules") 
> data(Adult) 

> rules <- apriori(Adult) 
> rules 
set of 6137 rules 

> rules <- subset(rules, lhs %ain% c("age=Senior","sex=Male")) 
> rules 
set of 167 rules 

> inspect(head(rules, by = "lift", n = 3)) 
    lhs         rhs     support confidence lift count 
[1] {age=Senior,                    
    marital-status=Married-civ-spouse,               
    sex=Male,                     
    capital-gain=None,                   
    native-country=United-States}  => {relationship=Husband} 0.12   1 2.5 5687 
[2] {age=Senior,                    
    marital-status=Married-civ-spouse,               
    race=White,                    
    sex=Male,                     
    capital-gain=None,                   
    native-country=United-States}  => {relationship=Husband} 0.11   1 2.5 5293 
[3] {age=Senior,                    
    marital-status=Married-civ-spouse,               
    sex=Male,                     
    capital-gain=None,                   
    capital-loss=None,                   
    native-country=United-States}  => {relationship=Husband} 0.11   1 2.5 5238