Sha256: e1713b53c201b0b320dc12878d9a33619fd706bb2cc9b48d576d7bbb4d1bda70

Contents?: true

Size: 1.26 KB

Versions: 7

Compression:

Stored size: 1.26 KB

Contents

require 'rubygems'
require 'decisiontree'

# ---Discrete-----------------------------------------------------------------------------------------

# Read in the training data
training, attributes = [], nil
File.open('data/discrete-training.txt','r').each_line { |line| 
  data = line.strip.split(',')
  attributes ||= data
  training.push(data.collect {|v| (v == 'will buy') || (v == "won't buy") ? (v == 'will buy' ? 1 : 0) : v})
}

# Remove the attribute row from the training data
training.shift

# Instantiate the tree, and train it based on the data (set default to '1')
dec_tree = DecisionTree::ID3Tree.new(attributes, training, 1, :discrete)
dec_tree.train

#---- Test the tree....

# Read in the test cases
#    Note: omit the attribute line (first line), we know the labels from the training data
test = []
File.open('data/discrete-test.txt','r').each_line { |line| data = line.strip.split(',') 
  test.push(data.collect {|v| (v == 'will buy') || (v == "won't buy") ? (v == 'will buy' ? 1 : 0) : v})
}

# Let the tree predict the output and compare it to the true specified value
test.each { |t|   predict = dec_tree.predict(t); puts "Predict: #{predict} ... True: #{t.last}"; }

# Graph the tree, save to 'discrete.png'
dec_tree.graph("discrete")

Version data entries

7 entries across 7 versions & 3 rubygems

Version Path
decisiontree-0.5.0 examples/discrete-id3.rb
igrigorik-decisiontree-0.3.1 examples/discrete-id3.rb
decisiontree_n-0.4.1 examples/discrete-id3.rb
decisiontree-0.4.0 examples/discrete-id3.rb
decisiontree-0.1.0 examples/discrete-id3.rb
decisiontree-0.2.0 examples/discrete-id3.rb
decisiontree-0.3.0 examples/discrete-id3.rb