similar 0.0.1 → 0.0.2

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.
@@ -1,3 +1,3 @@
1
1
  module Similar
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/similar.rb CHANGED
@@ -43,4 +43,22 @@ module Similar
43
43
  num / den.to_f
44
44
  end
45
45
 
46
+ def self.euclidian_distance(a, b)
47
+
48
+ # Add up the squares of all the differences
49
+ # sum_of_squares = sum(
50
+ # [pow(prefs[person1][item]-prefs[person2][item],2)
51
+
52
+ # for item in prefs[person1] if item in prefs[person2]])
53
+
54
+ # return 1/(1+sum_of_squares)
55
+
56
+ # sum, of the squares of the differences...
57
+ sum = a.zip(b).map { |x, y| ( (x - y) ** 2) }.inject(:+)
58
+
59
+ 1 / (1+ sum)
60
+ # sum_1_sq = a.inject(0) { |sum, c| sum + c ** 2 }
61
+ # sum_2_sq = b.inject(0) { |sum, c| sum + c ** 2 }
62
+ end
63
+
46
64
  end
data/similar.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
13
13
  if arbitrary sets of data.
14
14
  EOF
15
15
  gem.summary = %q{Determine similarity of arbitrary sets of data}
16
- gem.homepage = "http://scottjbarr.com"
16
+ gem.homepage = "http://github.com/scottbarr/similar"
17
17
 
18
18
  gem.files = `git ls-files`.split($/)
19
19
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
data/spec/similar_spec.rb CHANGED
@@ -23,4 +23,13 @@ describe Similar do
23
23
  lambda { Similar.pearson_score(a, b) }.should raise_exception(ArgumentError, "Arrays not of equal length")
24
24
  end
25
25
 
26
+ it "should calculate euclidian distance score" do
27
+ a = 5.0, 5.0, 5.0, 5.0, 5.0
28
+ b = 4.0, 4.0, 4.0, 4.0, 4.0
29
+
30
+ score = Similar.euclidian_distance(a, b)
31
+
32
+ score.should be_within(0.00001).of(0.16666666666666666)
33
+ end
34
+
26
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: similar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -159,7 +159,7 @@ files:
159
159
  - similar.gemspec
160
160
  - spec/similar_spec.rb
161
161
  - spec/spec_helper.rb
162
- homepage: http://scottjbarr.com
162
+ homepage: http://github.com/scottbarr/similar
163
163
  licenses: []
164
164
  post_install_message:
165
165
  rdoc_options: []