package Ġorg . jetbrains . bio . fish bone . miner Ċ Ċ import Ġorg . jetbrains . bio . fish bone . predicate . Predicate Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġwe ka . associ ations . Default Association Rule Ċ import Ġwe ka . associ ations . F PG row th Ċ import Ġwe ka . core . Selected Tag Ċ Ċ /** Ċ Ġ* ĠMin er Ġrun ĠFP - growth Ġalgorithm Ġon Ġspecified Ġdata Ċ Ġ* Ġ{@ see : Ġhttps :// en . wikipedia . org / wiki / Association _ rule _ learning # FP - growth _ algorithm } Ċ Ġ*/ Ċ class ĠF PG row th Miner Ġ: ĠWe ka Miner () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( F PG row th Miner :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġ< V > Ġmine ( ĊĠĠĠĠĠĠĠ Ġdatabase : ĠList < V >, ĊĠĠĠĠĠĠĠ Ġpredicates : ĠList < Predicate < V >>, ĊĠĠĠĠĠĠĠ Ġtargets : ĠList < Predicate < V >>, ĊĠĠĠĠĠĠĠ Ġpredicate Check : Ġ( Predicate < V >, ĠInt , ĠList < V >) Ġ-> ĠBoolean , ĊĠĠĠĠĠĠĠ Ġparams : ĠMap < String , ĠAny > ĊĠĠĠ Ġ): ĠList < List < Fish bone Miner . Node < V >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( targets . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstances By Target Ġ= Ġcreate Instances ( database , Ġpredicates , Ġtargets , Ġpredicate Check ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpredicates ByName Ġ= Ġ( predicates Ġ+ Ġtargets ). associate By Ġ{ Ġit . name () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstances By Target . map Ġ{ Ġ( target , Ġinstances ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfp Grow th Ġ= ĠF PG row th () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġcon viction Ġas Ġrule 's Ġordering Ġmetric ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Con viction Ġis Ġo ly Ġallowed Ġto Ġorder Ġrules Ġin ĠFP - Grow th Ġalgorithm ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfp Grow th . metric Type Ġ= ĠSelected Tag ( 3 , ĠDefault Association Rule . TAGS _ SELECTION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfp Grow th . build Associations ( instances ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Rule Nodes ( fp Grow th , Ġpredicates ByName , Ġtarget , Ġdatabase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( t . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRepresent ĠFP - Grow th Ġresults Ġin Ġa Ġform Ġof ĠFish bone Ġgraph . ĊĠĠĠĠ Ġ* ĠNOTE : Ġcannot Ġbe Ġabstract Ġfunction Ġof ĠWe ka Miner Ġclass Ġbecause Ġof Ġdifferent Ġhierarchy Ġof ĠWe ka Ġalgorithms ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġ< V > Ġbuild Rule Nodes ( ĊĠĠĠĠĠĠĠ Ġfp Grow th : ĠF PG row th , Ġpredicates ByName : ĠMap < String , ĠPredicate < V >>, Ġtarget : ĠPredicate < V >, Ġdatabase : ĠList < V > ĊĠĠĠ Ġ): ĠList < Fish bone Miner . Node < V >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfp Grow th . association Rules . rules . map Ġ{ Ġrule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= Ġrule . con sequence . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpredicate Name Ġ= Ġit . attribute . name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! predicates ByName . containsKey ( predicate Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Invalid Ġkey : Ġ$ predicate Name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicates ByName . getValue ( predicate Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Nodes ( conditions , Ġtarget , Ġdatabase ) ĊĠĠĠĠĠĠĠ Ġ}. flatten () ĊĠĠĠ Ġ} Ċ Ċ }