class DecisionTree

Attributes

root[R]

Public Class Methods

new(tree_xml) click to toggle source
# File lib/decision_tree.rb, line 7
def initialize(tree_xml)
  @id = tree_xml.attribute('id')
  @root = Node.new(tree_xml.xpath('TreeModel/Node'))
end

Public Instance Methods

decide(features) click to toggle source
# File lib/decision_tree.rb, line 12
def decide(features)
  curr = @root
  while curr.decision == ''
    prev = curr
    curr = step(curr, features)
    return if didnt_step?(curr, prev)
  end

  curr.decision
end

Private Instance Methods

didnt_step?(curr, prev) click to toggle source
# File lib/decision_tree.rb, line 31
def didnt_step?(curr, prev)
  return false if (prev.pred != curr.pred)
  RandomForester.logger.error "Null tree: #{@id}, bad feature: #{curr.left.pred.field }"
  true
end
step(curr, features) click to toggle source
# File lib/decision_tree.rb, line 25
def step(curr, features)
  curr = curr.left if curr.left && curr.left.true?(features)
  curr = curr.right if curr.right && curr.right.true?(features)
  curr
end