diff options
author | davor <vorgrimmlerdavid@gmx.de> | 2011-12-19 16:53:59 +0100 |
---|---|---|
committer | davor <vorgrimmlerdavid@gmx.de> | 2011-12-19 16:53:59 +0100 |
commit | c9ea121a7f6cce3643b38ffe551ca29d9a4b8e18 (patch) | |
tree | 3d60c2cc2996fd6d7c08294186379b3a14d5915e | |
parent | ad68034eb14e49adb41910502f1cb6cbac0b0afd (diff) |
Added Scaling
-rw-r--r-- | transform.rb | 81 |
1 files changed, 64 insertions, 17 deletions
diff --git a/transform.rb b/transform.rb index 73b803c..cfedd2b 100644 --- a/transform.rb +++ b/transform.rb @@ -76,38 +76,85 @@ class TransformTest < Test::Unit::TestCase 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] + 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] ] + foo = GSL::Matrix[[5,5,3,0,5,5]] + bar = GSL::Matrix[[5,4,5,5]] + + #puts + #puts m.to_a.collect { |r| r.collect{ |v| sprintf("%.2f", v) }.join(", ") }.join("\n") + #puts + #puts foo.to_a.collect { |r| r.collect{ |v| sprintf("%.2f", v) }.join(", ") }.join("\n") + #puts + #puts bar.to_a.collect { |r| r.collect{ |v| sprintf("%.2f", v) }.join(", ") }.join("\n") + + # AutoScale to improve on representation + nr_cases, nr_features = m.size1, m.size2 + (0..nr_features-1).each { |i| + autoscaler = OpenTox::Transform::AutoScale.new(m.col(i)) + m.col(i)[0..nr_cases-1] = autoscaler.vs + bar.col(i)[0..0] = autoscaler.transform bar.col(i) + } + autoscaler = OpenTox::Transform::AutoScale.new(foo.transpose.col(0)) + foo = GSL::Matrix[autoscaler.vs] + + #puts + #puts m.to_a.collect { |r| r.collect{ |v| sprintf("%.2f", v) }.join(", ") }.join("\n") + #puts + #puts foo.to_a.collect { |r| r.collect{ |v| sprintf("%.2f", v) }.join(", ") }.join("\n") + #puts + #puts bar.to_a.collect { |r| r.collect{ |v| sprintf("%.2f", v) }.join(", ") }.join("\n") + + # run SVD svd = OpenTox::Algorithm::Transform::SVD.new m - foo = svd.transform_feature GSL::Matrix[[5,5,3,0,5,5]] + foo = svd.transform_feature foo sim = [] svd.vk.each_row { |x| sim << OpenTox::Algorithm::Similarity.cosine_num(x,foo.row(0)) } + + # # # NO AUTOSCALE + #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 + + # # # AUTOSCALE 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 + assert_equal sim[1].round_to(3), 0.705 + assert_equal sim[2].round_to(3), 0.023 + assert_equal sim[3].round_to(3), 0.934 + - bar = svd.transform_instance GSL::Matrix[[5,4,5,5]] + bar = svd.transform_instance bar 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 + # # # NO AUTOSCALE + #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 + + # # # AUTOSCALE + assert_equal sim[0].round_to(3), -0.115 + assert_equal sim[1].round_to(3), 0.425 + assert_equal sim[2].round_to(3), -0.931 + assert_equal sim[3].round_to(3), -0.352 + assert_equal sim[4].round_to(3), 0.972 assert_equal sim[5].round_to(3), 1.000 + end def test_logas |