predictable 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.
- checksums.yaml +8 -8
- data/README.md +2 -11
- data/lib/predictable/item.rb +5 -12
- data/lib/predictable/user.rb +0 -6
- data/lib/predictable/version.rb +1 -1
- data/predictable.gemspec +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODY2N2ViZWRjMTY0Mjk1ZDliOWM1Y2ViY2NiYTlkZTQxYWU3N2VhNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OWExYmEwZmQwZTEzOTA5ODY3NDkwYmVjZmZlYjFkOGNmYTMyYjU4Yw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MmFjODEzMmVmOWU4NmU4MzgzNzIwNzYzN2EwYzU4OTk3NmIwNjBjMTMyNzBk
|
10
|
+
Y2EzODc0MGQ3N2EyZWRlZWNiOTBlNzFjNGU0ZTA5ZTMyMzBlMDYyOGVmZTY3
|
11
|
+
Nzg4ZTQ2NzMzZWRkZDVmOWYxN2E4ZWM5MmIwMDZlYmJmYTg2YTc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzA1NzBiNjM5N2E4N2QzNzhhMjdiNDczYzEyNGU3ZjA4MzMzOTgwMGZjYTdj
|
14
|
+
YzJjMmUwYmM2YTRkNThhZDIxZjg1YzRmZDc2MjczNmU2YWZkMGVkNmVlYmM4
|
15
|
+
YTNiZjY3ZWI4ZGM3NmJjOGY1ZDk4YjQ2OTJlYTBlNGFkOTMwMTA=
|
data/README.md
CHANGED
@@ -26,31 +26,22 @@ Include Predictable::User in your application's User model.
|
|
26
26
|
...
|
27
27
|
end
|
28
28
|
|
29
|
-
user = User.create(email: "js@perkhub.com")
|
30
|
-
user.add_to_recommender
|
31
|
-
|
32
29
|
Include the Predictable::Item in the models of the items you want to recommend.
|
33
30
|
|
34
31
|
class Offer < ActiveRecord::Base
|
35
32
|
include Predictable::Item
|
36
33
|
|
37
|
-
after_create { add_to_recommender }
|
38
|
-
after_destroy { delete_from_recommender }
|
39
|
-
|
40
34
|
...
|
41
35
|
end
|
42
36
|
|
43
37
|
Get 10 recommended items for a user.
|
44
38
|
|
45
|
-
Offer.recommended_for(user)
|
46
|
-
current_user.recommended_offers.where("created_at > ?", 1.week.ago).limit(10)
|
39
|
+
Offer.recommended_for(user, 10)
|
47
40
|
|
48
41
|
Get 10 items most similar to an existing item.
|
49
42
|
|
50
|
-
Offer.similar_to(offer)
|
51
|
-
|
43
|
+
Offer.similar_to(offer, 10)
|
52
44
|
|
53
|
-
current_user.recommended_offers.limit(10)
|
54
45
|
|
55
46
|
## Contributing
|
56
47
|
|
data/lib/predictable/item.rb
CHANGED
@@ -21,12 +21,6 @@ module Predictable
|
|
21
21
|
module Item
|
22
22
|
extend ActiveSupport::Concern
|
23
23
|
|
24
|
-
included do
|
25
|
-
# if active_record? defined?(ActiveRecord::Base) && ancestors.include?(ActiveRecord::Base)
|
26
|
-
after_create { add_to_recommender }
|
27
|
-
after_destroy { delete_from_recommender }
|
28
|
-
end
|
29
|
-
|
30
24
|
# Returns the item id
|
31
25
|
def pio_iid
|
32
26
|
"#{self.class.pio_itype}-#{id}"
|
@@ -73,21 +67,20 @@ module Predictable
|
|
73
67
|
to_s.underscore
|
74
68
|
end
|
75
69
|
|
76
|
-
def recommended_for(user, opts
|
70
|
+
def recommended_for(user, n, opts={})
|
77
71
|
options = { "itypes" => [pio_itype] }.merge(opts)
|
78
|
-
limit = options.delete("limit") || 10
|
79
72
|
|
80
|
-
item_ids = recommender.recommended_items(user,
|
73
|
+
item_ids = recommender.recommended_items(user, n, options)
|
81
74
|
item_ids = item_ids.map { |id| id.gsub! /[^\d]/, '' }
|
82
75
|
where(:id => item_ids)
|
83
76
|
end
|
84
77
|
|
85
|
-
def similar_to(item, opts={})
|
78
|
+
def similar_to(item, n, opts={})
|
86
79
|
options = opts.stringify_keys
|
87
80
|
options["pio_itypes"] ||= [pio_itype]
|
88
|
-
limit = options.delete("limit") ||
|
81
|
+
limit = options.delete("limit") || 100
|
89
82
|
|
90
|
-
item_ids = recommender.similar_items(item,
|
83
|
+
item_ids = recommender.similar_items(item, n, options)
|
91
84
|
item_ids = item_ids.map { |id| id.gsub! /[^\d]/, '' }
|
92
85
|
where(:id => item_ids)
|
93
86
|
end
|
data/lib/predictable/user.rb
CHANGED
@@ -14,12 +14,6 @@ module Predictable
|
|
14
14
|
module User
|
15
15
|
extend ActiveSupport::Concern
|
16
16
|
|
17
|
-
included do
|
18
|
-
# if active_record? defined?(ActiveRecord::Base) && ancestors.include?(ActiveRecord::Base)
|
19
|
-
after_create { add_to_recommender }
|
20
|
-
after_destroy { delete_from_recommender }
|
21
|
-
end
|
22
|
-
|
23
17
|
# Returns the user id
|
24
18
|
def pio_uid
|
25
19
|
self.id
|
data/lib/predictable/version.rb
CHANGED
data/predictable.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Predictable::VERSION
|
9
9
|
spec.authors = ["JS Boulanger"]
|
10
10
|
spec.email = ["jsboulanger@gmail.com"]
|
11
|
-
spec.description = "Ruby/Rails DSL for
|
12
|
-
spec.summary = "Ruby/Rails DSL for
|
11
|
+
spec.description = "Ruby/Rails DSL for Prediction.io, an open source machine learning server."
|
12
|
+
spec.summary = "Ruby/Rails DSL for Prediction.io."
|
13
13
|
spec.homepage = "https://github.com/jsboulanger/predictable"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: predictable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JS Boulanger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
- - ! '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
description: Ruby/Rails DSL for
|
83
|
+
description: Ruby/Rails DSL for Prediction.io, an open source machine learning server.
|
84
84
|
email:
|
85
85
|
- jsboulanger@gmail.com
|
86
86
|
executables: []
|
@@ -126,7 +126,7 @@ rubyforge_project:
|
|
126
126
|
rubygems_version: 2.1.11
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
|
-
summary: Ruby/Rails DSL for
|
129
|
+
summary: Ruby/Rails DSL for Prediction.io.
|
130
130
|
test_files:
|
131
131
|
- spec/predictable/item_spec.rb
|
132
132
|
- spec/predictable/recommender_spec.rb
|