kmeans-clusterer 0.11.0 → 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
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