avsd 0.0.1 → 0.0.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.
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