class Apriori::List

Attributes

sets[R]

Public Class Methods

create_subsets(set) click to toggle source
# File lib/apriori/list.rb, line 5
def self.create_subsets set
  (1).upto(set.size - 1).flat_map { |n| set.combination(n).to_a }
end
new(sets) click to toggle source
# File lib/apriori/list.rb, line 9
def initialize sets
  @sets = sets
end

Public Instance Methods

make_candidates() click to toggle source
# File lib/apriori/list.rb, line 18
def make_candidates
  if (size + 1) <= 2
    sets.flatten.combination(size + 1).to_a
  else
    self_join(prune)
  end
end
size() click to toggle source
# File lib/apriori/list.rb, line 13
def size
  return 0 if sets.empty?
  sets.first.size
end

Private Instance Methods

prune() click to toggle source
# File lib/apriori/list.rb, line 32
def prune
  sets.reject{|a1| sets.select{|a2| a1[0...-1] == a2[0...-1]}.size == 1}
end
self_join(set) click to toggle source
# File lib/apriori/list.rb, line 28
def self_join set
  set.map{|a1| set.select{|a2| a1[0...-1] == a2[0...-1]}.flatten.uniq}.uniq
end