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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kmeans-clusterer.rb +14 -4
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c2552e6a8ee7eddd6d03d8fa8cf7038c0458a11
4
- data.tar.gz: 62172e9d841aa4df7b332a4e2cda55bf426bc9b1
3
+ metadata.gz: 266be0ce63154b6d9dd3928ae7901b42795be4eb
4
+ data.tar.gz: 4be98d5b084e2d27473ca3bee802b442d2b7690a
5
5
  SHA512:
6
- metadata.gz: a33d17f4749b00e7ee8a0829e6a402db6eb768bd62f5dcb1e3ed9dcf3020b5ec074b3e5e38a817fb6d4a51ec13b8cf75f189a55b6a3e488738b4dc2828cbb878
7
- data.tar.gz: c4a2e27da37141435583d1b09cbf4001f4b2c44a5b2900155e2444f45d9663edf0ccab6d4f80c50d05ad85ce31710a7d4558356bded561bf17199e7333c3e14d
6
+ metadata.gz: 4afc940658e70c7c0871fe3694d8e220f0048a66191b235ca179695c1366f61ce50b8793d5f107e95cd074110e97903ba3ff36f7116655b9cb047c94193ada6c
7
+ data.tar.gz: 24a9be6db3a93a5a64c71f6820f62bcc96aa44adbfb35fd7007c882242e82edd4fec9151bc1bf7eaa13cd763f9a9170f382c2ffab6e226f1850d631105871045
@@ -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
- unless data.is_a?(NMatrix)
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 = NMatrix.cast(data, @typecode)
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.0
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-03-24 00:00:00.000000000 Z
11
+ date: 2015-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: narray