decisiontree
decisiontree copied to clipboard
Follow Ruby Naming convention and Added an extra attributes accessor for training data
trafficstars
I need the train data out of the box, so added an attributes accessor to access the train data in RuleSet Class, So that I can get the accuracy directly. For better understanding I can show u the code snippet
class Simple
def initialize(attributes=nil, training=nil)
@attributes = attributes || ['Temperature']
@training = training ||[
[36.6, 'healthy'],
[37, 'sick'],
[38, 'sick'],
[36.7, 'healthy'],
[40, 'sick'],
[50, 'really sick']
]
end
def tree
dec_tree = DecisionTree::ID3Tree.new(@attributes, @training, 'sick', :continuous)
dec_tree.train
rule_set = dec_tree.rule_set
result = rule_set.rules.each { |r| r.accuracy(rule_set.train_data) }
result.collect { |r| ap [r.conclusion, r.accuracy] }
end
end
Do you really need to call it with rule_set.train_data? Looking at the code, we memoize @accuracy so I think you can just cal r.accuracy and get the value computed during the earlier training pass.