ai4ruby 1.13 → 1.14
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.
@@ -13,18 +13,33 @@ module Ai4r
|
|
13
13
|
|
14
14
|
attr_reader :cluster_tree
|
15
15
|
|
16
|
-
def initialize
|
16
|
+
def initialize(depth = nil)
|
17
17
|
@cluster_tree = []
|
18
|
+
@depth = depth
|
19
|
+
@merges_so_far = 0
|
20
|
+
super()
|
21
|
+
end
|
22
|
+
|
23
|
+
def build(data_set, number_of_clusters)
|
24
|
+
data_len = data_set.data_items.length
|
25
|
+
@total_merges = data_len - number_of_clusters
|
18
26
|
super
|
27
|
+
@cluster_tree << self.clusters
|
28
|
+
@cluster_tree.reverse!
|
29
|
+
return self
|
19
30
|
end
|
20
31
|
|
21
32
|
protected
|
22
33
|
|
23
34
|
def merge_clusters(index_a, index_b, index_clusters)
|
24
|
-
# store
|
25
|
-
|
26
|
-
|
27
|
-
|
35
|
+
# only store if no or above depth
|
36
|
+
if @depth.nil? or @merges_so_far > @total_merges - @depth
|
37
|
+
# store current clusters
|
38
|
+
stored_distance_matrix = @distance_matrix.dup
|
39
|
+
@cluster_tree << build_clusters_from_index_clusters(index_clusters)
|
40
|
+
@distance_matrix = stored_distance_matrix
|
41
|
+
end
|
42
|
+
@merges_so_far += 1
|
28
43
|
super
|
29
44
|
end
|
30
45
|
end
|
@@ -52,8 +52,28 @@ class Ai4r::Clusterers::WardLinkageHierarchicalTest < Test::Unit::TestCase
|
|
52
52
|
def test_cluster_tree
|
53
53
|
clusterer = Ai4r::Clusterers::WardLinkageHierarchical.new
|
54
54
|
clusterer.build(DataSet.new(:data_items => @@data), 1)
|
55
|
-
|
56
|
-
|
55
|
+
assert_equal @@data.length, clusterer.cluster_tree.length
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_cluster_tree_limit
|
59
|
+
depth = 5
|
60
|
+
clusterer = Ai4r::Clusterers::WardLinkageHierarchical.new(5)
|
61
|
+
clusterer.build(DataSet.new(:data_items => @@data), 1)
|
62
|
+
assert_equal 5, clusterer.cluster_tree.length
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_cluster_tree_first_length
|
66
|
+
depth = 5
|
67
|
+
clusterer = Ai4r::Clusterers::WardLinkageHierarchical.new(5)
|
68
|
+
clusterer.build(DataSet.new(:data_items => @@data), 1)
|
69
|
+
assert_equal 1, clusterer.cluster_tree.first.length
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_cluster_tree_last_length
|
73
|
+
depth = 5
|
74
|
+
clusterer = Ai4r::Clusterers::WardLinkageHierarchical.new(5)
|
75
|
+
clusterer.build(DataSet.new(:data_items => @@data), 1)
|
76
|
+
assert_equal 5, clusterer.cluster_tree.last.length
|
57
77
|
end
|
58
78
|
|
59
79
|
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ai4ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: "1.
|
8
|
+
- 14
|
9
|
+
version: "1.14"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sergio Fierens
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-02-
|
18
|
+
date: 2012-02-05 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description:
|