hybridforest 0.13.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
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