Class: FpGrowth::Miner::Miner
- Inherits:
-
Object
- Object
- FpGrowth::Miner::Miner
- Defined in:
- lib/fpgrowth/miner.rb
Instance Attribute Summary collapse
-
#pattern_set ⇒ Object
readonly
Returns the value of attribute pattern_set.
Instance Method Summary collapse
- #build_conditional_tree(tree = FpTree.new, item) ⇒ Object
- #fp_growth(fp_tree, pattern_alpha = Pattern.new(), rank = 0) ⇒ Object
-
#initialize ⇒ Miner
constructor
A new instance of Miner.
- #top_down_fp_growth(header_table, pattern_alpha = Pattern.new(), min_support = 0) ⇒ Object
Constructor Details
#initialize ⇒ Miner
Returns a new instance of Miner.
29 30 31 |
# File 'lib/fpgrowth/miner.rb', line 29 def initialize @pattern_set = [] end |
Instance Attribute Details
#pattern_set ⇒ Object (readonly)
Returns the value of attribute pattern_set.
27 28 29 |
# File 'lib/fpgrowth/miner.rb', line 27 def pattern_set @pattern_set end |
Instance Method Details
#build_conditional_tree(tree = FpTree.new, item) ⇒ Object
33 34 35 36 |
# File 'lib/fpgrowth/miner.rb', line 33 def build_conditional_tree(tree=FpTree.new, item) pattern_base = PatternBaseExtractor.new(tree, item).execute() tree = ConditionalTreeBuilder.new(pattern_base, tree.threshold).execute() end |
#fp_growth(fp_tree, pattern_alpha = Pattern.new(), rank = 0) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/fpgrowth/miner.rb', line 39 def fp_growth(fp_tree, pattern_alpha=Pattern.new(), rank=0) if fp_tree.single_path? # Fin de la récursivité for combination in fp_tree.combinations # generate pattern_beta U pattern_alpha # with support = minimum support of nodes in pattern_beta pattern_beta = pattern_alpha.clone for node in combination pattern_beta << node end @pattern_set << pattern_beta #puts "Pattern extracted : #{pattern_beta.content.to_s} - #{pattern_beta.support}" end else for item in fp_tree.supports.keys # generate pattern_beta = item U pattern_alpha with support = item.support # construct pattern_beta's conditional pattern base and then pattern_beta's conditionnal FpTree pattern_beta = pattern_alpha.clone pattern_beta.content << item pattern_beta.support= fp_tree.supports[item] tree_beta = build_conditional_tree(fp_tree, item) fp_growth(tree_beta, pattern_beta, rank + 1) unless tree_beta == nil or tree_beta.empty? end end end |
#top_down_fp_growth(header_table, pattern_alpha = Pattern.new(), min_support = 0) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/fpgrowth/miner.rb', line 65 def top_down_fp_growth(header_table, pattern_alpha=Pattern.new(), min_support=0) if header_table.instance_of? FpTree::FpTree header_table = header_table.header_table end # For each row of header_table for row in header_table.keys # If Support of header_table > min_support if header_table.count[row] > min_support then # output pattern extended with row.item pattern_beta = Pattern.new(pattern_alpha.content + [row], header_table.count[row]) @pattern_set << pattern_beta # puts "Pattern extracted : #{pattern_beta.content.to_s} - #{pattern_beta.support}" # Build new Header Table header_table_new = FpTree::HeaderTable.build(row, header_table) # Mine extended pattern, new header table top_down_fp_growth(header_table_new, pattern_beta) end end end |