aboutsummaryrefslogtreecommitdiff
path: root/gen-data.rb
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2019-02-03 04:54:10 -0500
committerPaul Duncan <pabs@pablotron.org>2019-02-03 04:54:10 -0500
commit1e3dc2401263a436a32377e207352ffbe6984e8f (patch)
treefc34de6b8d7a456d861d7534360073ad10d8c620 /gen-data.rb
parenta3792d8769d2dc8ee0abae758c6fae3a35b5dfbc (diff)
downloadkmeans-1e3dc2401263a436a32377e207352ffbe6984e8f.tar.bz2
kmeans-1e3dc2401263a436a32377e207352ffbe6984e8f.zip
add outstanding changes
Diffstat (limited to 'gen-data.rb')
-rwxr-xr-xgen-data.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/gen-data.rb b/gen-data.rb
new file mode 100755
index 0000000..e010ed1
--- /dev/null
+++ b/gen-data.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/env ruby
+
+# get number of rows
+NUM_ROWS = (ARGV.shift || 100).to_i
+
+# data shape (num_floats, num_ints)
+SHAPE = [2, 0]
+
+# cluster centers
+Q = [[-1, -1], [-1, +1], [+1, -1], [+1, +1]].map { |c|
+ c.map { |v| 0.5 + 0.25 * v }
+}
+
+def noise(y, x, scale)
+ Q[y % Q.size][x] + scale * rand * Math.cos(Math::PI * rand)
+end
+
+# print output
+puts [SHAPE.join(' ')] + NUM_ROWS.times.map { |y|
+ SHAPE.first.times.map { |x|
+ '%1.5f' % [noise(y, x, 0.1)]
+ }.join(' ')
+}