hybridforest 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa4457c9f58fde0edfa9fd8af0a4ac5ef23db54892f75a50a8f62ac1f8652631
4
- data.tar.gz: a8f0afc4b58d067388f3c5986521609a5ede0816643f73235b8517265c6b72c7
3
+ metadata.gz: 4311342fccd332cd6f98b2b6a30f32acc01f2f3090490e452e9bfe8981730f07
4
+ data.tar.gz: 2a4461a04ac9232d5506271ddbf8b9f9b49b7397a06c00aea894711c3ce0586f
5
5
  SHA512:
6
- metadata.gz: 9261b0cc8fa086e8b91f910f8b852f2369a1eac0e76ee4b01f1db3dddf9bb7f8f9947cbcaca2f81d6db6a9c734ed516a0848f29b7735661ea5be428b8e720392
7
- data.tar.gz: 5d8a886b98ca5e735b4173fb51e114d313c28ef480bd8cae32cf339634e49384a44d4fdb53548afb82228bd368960ef002d55bbd1292dd8313706b2458bf543c
6
+ metadata.gz: 9708316bfa685c814afbffea2d2ea238dd8736ac929bd782a365d6ab65dbe2d1987df7a66750db3d9108071279a99cb1206f179163f1383494c0ebcda704fab6
7
+ data.tar.gz: efbd6db6210d02830734bb7e3411f8b9553ed8b6172df59f1180e801884057d34edd85a67cd6c63e6b09c8531cf434ccdf265e14f4d8d26e035b333a5805c48d
data/CHANGELOG.md CHANGED
@@ -48,4 +48,9 @@
48
48
 
49
49
  ## [0.13.0] - 2022-01-09
50
50
 
51
- - Refactor forest growers
51
+ - Refactor forest growers
52
+
53
+
54
+ ## [0.14.0] - 2022-01-09
55
+
56
+ - Refactor hybrid forest grower
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hybridforest (0.12.0)
4
+ hybridforest (0.13.0)
5
5
  activesupport (~> 6.1)
6
6
  rake (~> 13.0)
7
7
  require_all
@@ -11,8 +11,9 @@ module HybridForest
11
11
  def grow_forest(instances, number_of_trees)
12
12
  forest = []
13
13
  number_of_trees.times do
14
- in_of_bag, out_of_bag, out_of_bag_labels = HybridForest::Utils.train_test_bootstrap_split(instances)
15
- tree_results = grow_trees(TREE_TYPES, in_of_bag, out_of_bag, out_of_bag_labels)
14
+ iob_data, oob_data, oob_labels = HybridForest::Utils.train_test_bootstrap_split(instances)
15
+ trees = grow_trees(TREE_TYPES, iob_data)
16
+ tree_results = predict_evaluate_trees(trees, oob_data, oob_labels)
16
17
  best_tree = select_best_tree(tree_results)
17
18
  forest << best_tree
18
19
  end
@@ -21,25 +22,28 @@ module HybridForest
21
22
 
22
23
  private
23
24
 
24
- def fit_and_predict(tree_class, in_of_bag, out_of_bag, out_of_bag_labels)
25
- tree = tree_class.new.fit(in_of_bag)
26
- tree_predictions = tree.predict(out_of_bag)
27
- tree_accuracy = HybridForest::Utils.accuracy(tree_predictions, out_of_bag_labels)
28
- {tree: tree, oob_accuracy: tree_accuracy}
25
+ def grow_trees(tree_types, iob_data)
26
+ tree_types.collect do |tree_type|
27
+ tree_type.new.fit(iob_data)
28
+ end
29
+ end
30
+
31
+ def predict_evaluate_trees(trees, oob_data, oob_labels)
32
+ trees.collect do |tree|
33
+ predict_evaluate(tree, oob_data, oob_labels)
34
+ end
35
+ end
36
+
37
+ def predict_evaluate(tree, data, actual_labels)
38
+ predicted_labels = tree.predict(data)
39
+ accuracy = HybridForest::Utils.accuracy(predicted_labels, actual_labels)
40
+ {tree: tree, oob_accuracy: accuracy}
29
41
  end
30
42
 
31
43
  def select_best_tree(tree_results)
32
44
  best_result = tree_results.max_by(1) { |result| result[:oob_accuracy] }.first
33
45
  best_result[:tree]
34
46
  end
35
-
36
- def grow_trees(tree_types, in_of_bag, out_of_bag, out_of_bag_labels)
37
- tree_results = []
38
- tree_types.each do |tree_type|
39
- tree_results << fit_and_predict(tree_type, in_of_bag, out_of_bag, out_of_bag_labels)
40
- end
41
- tree_results
42
- end
43
47
  end
44
48
  end
45
49
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HybridForest
4
- VERSION = "0.13.0"
4
+ VERSION = "0.14.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hybridforest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - hi-tech-jazz