summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavor <vorgrimmlerdavid@gmx.de>2011-12-19 14:43:24 +0100
committerdavor <vorgrimmlerdavid@gmx.de>2011-12-19 14:43:24 +0100
commitad68034eb14e49adb41910502f1cb6cbac0b0afd (patch)
treef010304ca3c10126bb1f7b1ccfa4790fdc732824
parentb840d21e8f83203f7856e8aed16a7483832bfb6d (diff)
Added SVD test
fixed logas transform
-rw-r--r--transform.rb46
1 files changed, 41 insertions, 5 deletions
diff --git a/transform.rb b/transform.rb
index 5b2bd48..73b803c 100644
--- a/transform.rb
+++ b/transform.rb
@@ -2,6 +2,11 @@ require 'rubygems'
require 'opentox-ruby'
require 'test/unit'
+class Float
+ def round_to(x)
+ (self * 10**x).round.to_f / 10**x
+ end
+end
class TransformTest < Test::Unit::TestCase
@@ -68,6 +73,42 @@ class TransformTest < Test::Unit::TestCase
end
+
+ def test_svd
+
+ m = GSL::Matrix[
+ [5,5,0,5],
+ [5,0,3,4],
+ [3,4,0,3],
+ [0,0,5,3],
+ [5,4,4,5],
+ [5,4,5,5]
+ ]
+ svd = OpenTox::Algorithm::Transform::SVD.new m
+
+ foo = svd.transform_feature GSL::Matrix[[5,5,3,0,5,5]]
+ sim = []
+ svd.vk.each_row { |x|
+ sim << OpenTox::Algorithm::Similarity.cosine_num(x,foo.row(0))
+ }
+ assert_equal sim[0].round_to(3), 1.000
+ assert_equal sim[1].round_to(3), 0.874
+ assert_equal sim[2].round_to(3), 0.064
+ assert_equal sim[3].round_to(3), 0.895
+
+ bar = svd.transform_instance GSL::Matrix[[5,4,5,5]]
+ sim = []
+ svd.uk.each_row { |x|
+ sim << OpenTox::Algorithm::Similarity.cosine_num(x,bar.row(0))
+ }
+
+ assert_equal sim[0].round_to(3), 0.346
+ assert_equal sim[1].round_to(3), 0.966
+ assert_equal sim[2].round_to(3), 0.282
+ assert_equal sim[3].round_to(3), 0.599
+ assert_equal sim[4].round_to(3), 0.975
+ assert_equal sim[5].round_to(3), 1.000
+ end
def test_logas
@@ -87,27 +128,22 @@ class TransformTest < Test::Unit::TestCase
logas = OpenTox::Transform::LogAutoScale.new(d1)
assert_equal logas.vs, d1la
- assert_equal logas.transform(d1), logas.vs
assert_equal logas.restore(logas.vs), d1
logas = OpenTox::Transform::LogAutoScale.new(d2)
assert_equal logas.vs, d2la
- assert_equal logas.transform(d2), d2la
assert_equal logas.restore(logas.vs), d2
logas = OpenTox::Transform::LogAutoScale.new(d3)
assert_equal logas.vs, d3la
- assert_equal logas.transform(d3), logas.vs
assert_equal logas.restore(logas.vs), d3
logas = OpenTox::Transform::LogAutoScale.new(d4)
assert_equal logas.vs, d4la
- assert_equal logas.transform(d4), logas.vs
assert_equal logas.restore(logas.vs), d4
logas = OpenTox::Transform::LogAutoScale.new(d5)
assert_equal logas.vs, d5la
- assert_equal logas.transform(d5), logas.vs
assert_equal logas.restore(logas.vs), d5
}