avsd 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -1
  3. data/lib/avsd.rb +53 -50
  4. data/lib/avsd/version.rb +1 -1
  5. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bee7f10608a60d9182ab32aee8f010312b983525
4
- data.tar.gz: 698a2edb8bc3086a7683eb1973706665590353aa
3
+ metadata.gz: ee1b9d6846cba3cc3b0ba4d633d935888876ba8e
4
+ data.tar.gz: d479e01f10d5253800042af9dcc05127b8980446
5
5
  SHA512:
6
- metadata.gz: 45b83e80eb117f1070a6de2c28db55b2ec474b32a35672aa75cfdea02c56f561d0abfc165d0b82ccc163cb01a9011abc6ab199a90f7f091b387ada1a36e5955d
7
- data.tar.gz: bd7eebcfd5f33b9c9366b7553c82c3f07501f0583d94e2407024ba60c7957ec074f3d3ef8ed1d5939ddc1bcdebb58874405c8ea23c8fc452337c493ee845c878
6
+ metadata.gz: 8d5b9860bba1f1389584a58d09a36a8c1e4296496b5fc2cdb9cf6a6621588c95ccddf17bbe9da7288ae07ce47d0f9024054c840968acc3d0c1f6bf54fd7c7b07
7
+ data.tar.gz: e01332f6a6c3643a093f0fe687a2ac6f137fb013e9889e04f0af9e398d617aef3340ff934081ce45b19625d3ee0fec6a2abf7777cf1a0ad34d64305ef864d669
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Avsd
2
2
 
3
- Avsd is AVSD Recommend Algorithm implimatation on Ruby gem. AVSD Recommend Algorithm recommends sets of items based on multiple exisiting sets of items.
3
+ ###THIS GEM IS UNDEREXPERIMENT
4
+
5
+ Avsd is AVSD Recommend Algorithm implimatation on Ruby gem. AVSD Recommend Algorithm recommends sets of items based on multiple exisiting sets of items with a measure of creativity.
4
6
 
5
7
  ## Installation
6
8
 
@@ -92,72 +92,75 @@ class Array
92
92
  end
93
93
  end
94
94
 
95
- class Avsd
96
- def initialize(records)
97
- @labels = records.flatten.uniq
98
- @co_mat = Matrix.unit(labels.length)
99
- self.band_matrix records
100
- self.g_short_mat
101
- end
95
+ module Avsd
96
+ class Avsd
97
+ def initialize(records)
98
+ @labels = records.flatten.uniq
99
+ @co_mat = Matrix.unit(labels.length)
100
+ self.band_matrix records
101
+ self.g_short_mat
102
+ end
102
103
 
103
- def band label1, label2
104
- @co_mat[@labels.index(label1), @labels.index(label2)] += 1
105
- end
104
+ def band label1, label2
105
+ @co_mat[@labels.index(label1), @labels.index(label2)] += 1
106
+ end
106
107
 
107
- def band_matrix records
108
- @labels.each do |label_a|
109
- records.each do |record|
110
- if record.include? label_a
111
- record.each do |label_b|
112
- band(label_a, label_b)
108
+ def band_matrix records
109
+ @labels.each do |label_a|
110
+ records.each do |record|
111
+ if record.include? label_a
112
+ record.each do |label_b|
113
+ band(label_a, label_b)
114
+ end
113
115
  end
114
116
  end
115
117
  end
118
+ @co_mat.mirror_diagonal.zero_diagonal
116
119
  end
117
- @co_mat.mirror_diagonal.zero_diagonal
118
- end
119
120
 
120
- def g_short_mat
121
- @short_mat = Matrix.zero(@co_mat.column_size)
122
- @short_mat = @short_mat.collect { |x| x = nil }
123
- for s_id in 0..@co_mat.column_size - 1
124
- q = PriorityQueue.new
125
- q[s_id] = 0
126
- while not q.empty?
127
- f = q.delete_min
128
- @short_mat[s_id, f[0]] = f[1]
129
- @short_mat.inspect
130
- @co_mat.row(f[0]).each_with_index do |val, i|
131
- next if i == f[0] or val == 0 or @short_mat[s_id, i] != nil
132
- if q[i] == nil or q[i] < f[1] + val
133
- q[i] = f[1] + val
121
+ def g_short_mat
122
+ @short_mat = Matrix.zero(@co_mat.column_size)
123
+ @short_mat = @short_mat.collect { |x| x = nil }
124
+ for s_id in 0..@co_mat.column_size - 1
125
+ q = PriorityQueue.new
126
+ q[s_id] = 0
127
+ while not q.empty?
128
+ f = q.delete_min
129
+ @short_mat[s_id, f[0]] = f[1]
130
+ @short_mat.inspect
131
+ @co_mat.row(f[0]).each_with_index do |val, i|
132
+ next if i == f[0] or val == 0 or @short_mat[s_id, i] != nil
133
+ if q[i] == nil or q[i] < f[1] + val
134
+ q[i] = f[1] + val
135
+ end
134
136
  end
135
137
  end
136
138
  end
137
139
  end
138
- end
139
140
 
140
- def sample num
141
- arr = Array.new(@short_mat.column_size) { |idx| idx }
142
- set = arr.sample num
143
- arr = []
144
- set.length.times do |i|
145
- for k in i + 1..set.length - 1
146
- arr << [set[i], set[k]]
141
+ def sample num
142
+ arr = Array.new(@short_mat.column_size) { |idx| idx }
143
+ set = arr.sample num
144
+ arr = []
145
+ set.length.times do |i|
146
+ for k in i + 1..set.length - 1
147
+ arr << [set[i], set[k]]
148
+ end
147
149
  end
150
+ sampled_labels = Hash.new
151
+ set.each do |id|
152
+ sampled_labels[@labels[id]] = id
153
+ end
154
+ vals = []
155
+ arr.each do |id_set|
156
+ vals << @short_mat[id_set[0], id_set[1]]
157
+ end
158
+ [sampled_labels, vals, vals.mean, vals.sd].inspect
148
159
  end
149
- sampled_labels = Hash.new
150
- set.each do |id|
151
- sampled_labels[@labels[id]] = id
152
- end
153
- vals = []
154
- arr.each do |id_set|
155
- vals << @short_mat[id_set[0], id_set[1]]
156
- end
157
- [sampled_labels, vals, vals.mean, vals.sd].inspect
160
+
161
+ attr_accessor :short_mat, :co_mat, :labels
158
162
  end
159
163
 
160
- attr_accessor :short_mat, :co_mat, :labels
161
164
  end
162
165
 
163
166
 
@@ -1,3 +1,3 @@
1
1
  module Avsd
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yui Kita