recommendation 0.1.3

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.
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ require File.dirname(__FILE__) + '/../../spec_helper'
5
+
6
+ describe 'Recommendation::Supervisor' do
7
+ describe 'initialize and table' do
8
+ it 'should have empty hash' do
9
+ supervisor = Recommendation::Supervisor.new
10
+ supervisor.table.length.should be_eql 0
11
+ end
12
+ end
13
+
14
+ describe 'initialize and table with args' do
15
+ it 'should have hash of args' do
16
+ supervisor = Recommendation::Supervisor.new(initial_data)
17
+ supervisor.table.should be_eql initial_data
18
+ end
19
+ end
20
+
21
+ describe 'train' do
22
+ it 'should merge additional data' do
23
+ supervisor = Recommendation::Supervisor.new(initial_data)
24
+ supervisor.train(append_data)
25
+ supervisor.table.should be_eql merged_data
26
+ end
27
+ end
28
+
29
+ describe 'integration with engine' do
30
+ it 'should be suggesting successful' do
31
+ supervisor = Recommendation::Supervisor.new(merged_data)
32
+ engine = Recommendation::Engine.new
33
+
34
+ expected = {"item_6" => 220.0}
35
+ result = engine.recommendation(supervisor.table, 'user_4')
36
+ result.should be_eql expected
37
+
38
+ expected = {"user_2"=>1.0, "user_1"=>1.0, "user_3"=>0}
39
+ result = engine.top_matches(supervisor.table, 'user_4')
40
+ result.should be_eql expected
41
+ end
42
+ end
43
+ end
44
+
45
+ def initial_data
46
+ {
47
+ "user_1" => {
48
+ "item_1" => 100,
49
+ "item_2" => 140,
50
+ "item_3" => 160
51
+ },
52
+ "user_2" => {
53
+ "item_2" => 200,
54
+ "item_4" => 210,
55
+ "item_6" => 220
56
+ },
57
+ "user_3" => {
58
+ "item_3" => 300,
59
+ "item_6" => 330,
60
+ "item_9" => 360
61
+ }
62
+ }
63
+ end
64
+
65
+ def append_data
66
+ {
67
+ "user_1" => {
68
+ "item_2" => 400,
69
+ "item_7" => 410,
70
+ },
71
+ "user_4" => {
72
+ "item_2" => 150,
73
+ "item_4" => 230,
74
+ "item_7" => 580
75
+ }
76
+ }
77
+ end
78
+
79
+ def merged_data
80
+ {
81
+ "user_1" => {
82
+ "item_2" => 400,
83
+ "item_7" => 410
84
+ },
85
+ "user_2" => {
86
+ "item_2" => 200,
87
+ "item_4" => 210,
88
+ "item_6" => 220
89
+ },
90
+ "user_3" => {
91
+ "item_3" => 300,
92
+ "item_6" => 330,
93
+ "item_9" => 360
94
+ },
95
+ "user_4" => {
96
+ "item_2" => 150,
97
+ "item_4" => 230,
98
+ "item_7" => 580
99
+ }
100
+ }
101
+ end
@@ -0,0 +1,13 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe Recommendation do
6
+ context 'const get :VERSION should' do
7
+ it "return right version number" do
8
+ expect = '0.1.3'
9
+ Recommendation.const_get(:VERSION).should be_true
10
+ Recommendation.const_get(:VERSION).should == expect
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), ".."))
4
+ $LOAD_PATH.unshift APP_ROOT
5
+ $LOAD_PATH.unshift File.join(APP_ROOT)
6
+ $LOAD_PATH.unshift File.join(APP_ROOT, 'lib')
7
+
8
+ require 'recommendation'
9
+
10
+ if ENV['COVERAGE'] == 'on'
11
+ require 'simplecov'
12
+ require 'simplecov-rcov'
13
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
14
+
15
+ SimpleCov.start do
16
+ add_filter "spec"
17
+ add_filter "vendor"
18
+ end
19
+ end
20
+
21
+ unless /^1\.9\./ =~ RUBY_VERSION
22
+ require 'rspec'
23
+ end
24
+
25
+ RSpec.configure do |config|
26
+ end
File without changes
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: recommendation
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - id774
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cucumber
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jeweler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Collaborative filtering for recommender system
56
+ email: idnanashi@gmail.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files:
60
+ - README.md
61
+ files:
62
+ - Gemfile
63
+ - README.md
64
+ - Rakefile
65
+ - VERSION
66
+ - demo.rb
67
+ - doc/AUTHORS
68
+ - doc/COPYING
69
+ - doc/COPYING.LESSER
70
+ - doc/ChangeLog
71
+ - doc/LICENSE
72
+ - doc/README
73
+ - lib/recommendation.rb
74
+ - lib/recommendation/engine.rb
75
+ - lib/recommendation/supervisor.rb
76
+ - recommendation.gemspec
77
+ - script/build
78
+ - spec/lib/recommendation/engine_spec.rb
79
+ - spec/lib/recommendation/supervisor_spec.rb
80
+ - spec/lib/recommendation_spec.rb
81
+ - spec/spec_helper.rb
82
+ - vendor/.gitkeep
83
+ homepage: http://github.com/id774/recommendation
84
+ licenses:
85
+ - GPL
86
+ metadata: {}
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubyforge_project:
103
+ rubygems_version: 2.1.5
104
+ signing_key:
105
+ specification_version: 4
106
+ summary: recommendation
107
+ test_files: []