kmeans-clusterer 0.11.0 → 0.11.1
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 +4 -4
- data/lib/kmeans-clusterer.rb +14 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 266be0ce63154b6d9dd3928ae7901b42795be4eb
|
4
|
+
data.tar.gz: 4be98d5b084e2d27473ca3bee802b442d2b7690a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4afc940658e70c7c0871fe3694d8e220f0048a66191b235ca179695c1366f61ce50b8793d5f107e95cd074110e97903ba3ff36f7116655b9cb047c94193ada6c
|
7
|
+
data.tar.gz: 24a9be6db3a93a5a64c71f6820f62bcc96aa44adbfb35fd7007c882242e82edd4fec9151bc1bf7eaa13cd763f9a9170f382c2ffab6e226f1850d631105871045
|
data/lib/kmeans-clusterer.rb
CHANGED
@@ -3,6 +3,18 @@ require 'narray'
|
|
3
3
|
class KMeansClusterer
|
4
4
|
TYPECODE = { double: NArray::DFLOAT, single: NArray::SFLOAT }
|
5
5
|
|
6
|
+
module Utils
|
7
|
+
def self.ensure_matrix x, typecode = nil
|
8
|
+
if x.is_a?(NMatrix)
|
9
|
+
x
|
10
|
+
elsif defined?(GSL::Matrix) && x.is_a?(GSL::Matrix)
|
11
|
+
x.to_nm
|
12
|
+
else
|
13
|
+
NMatrix.cast(x, typecode)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
6
18
|
module Scaler
|
7
19
|
def self.mean data
|
8
20
|
data.mean(1)
|
@@ -111,9 +123,7 @@ class KMeansClusterer
|
|
111
123
|
opts[:k] = k
|
112
124
|
opts[:typecode] = TYPECODE[opts[:float_precision]]
|
113
125
|
|
114
|
-
|
115
|
-
data = NMatrix.cast data, opts[:typecode]
|
116
|
-
end
|
126
|
+
data = Utils.ensure_matrix data, opts[:typecode]
|
117
127
|
|
118
128
|
if opts[:scale_data]
|
119
129
|
data, mean, std = Scaler.scale(data, nil, nil, opts[:typecode])
|
@@ -227,7 +237,7 @@ class KMeansClusterer
|
|
227
237
|
end
|
228
238
|
|
229
239
|
def predict data
|
230
|
-
data =
|
240
|
+
data = Utils.ensure_matrix data, @typecode
|
231
241
|
data, _m, _s = Scaler.scale(data, @mean, @std, @typecode) if @scale_data
|
232
242
|
distances = Distance.euclidean(@centroids, data)
|
233
243
|
data.shape[1].times.map do |i|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kmeans-clusterer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoff Buesing
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: narray
|