summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavor <vorgrimmlerdavid@gmx.de>2011-12-19 16:53:59 +0100
committerdavor <vorgrimmlerdavid@gmx.de>2011-12-19 16:53:59 +0100
commitc9ea121a7f6cce3643b38ffe551ca29d9a4b8e18 (patch)
tree3d60c2cc2996fd6d7c08294186379b3a14d5915e
parentad68034eb14e49adb41910502f1cb6cbac0b0afd (diff)
Added Scaling
-rw-r--r--transform.rb81
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