kmeans-clusterer 0.11.3 → 0.11.4

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 +11 -7
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07e426d9d9009e4ea9fc432f08b8390f8bb69bc6
4
- data.tar.gz: 8cd3c31df1d33de334c63db296fe2d40f4c56eac
3
+ metadata.gz: 2f196c59682129e44c96683048f0038bbff969e8
4
+ data.tar.gz: 59c7aead159e0c8ccbf216b10289022876f4d315
5
5
  SHA512:
6
- metadata.gz: ffeb5fd9e2167411314674110cb618d5de43460fd32d01572bd400e7905fd7f94052624fa013c3d1309b08c10d5f1afc92b24e87ff9f4eb302c25639f53f3e32
7
- data.tar.gz: a4e10c472ec5fc84b4a1444da6fadf5c246310a2aef0f701d58af7cd62231a9aac53fff0c3200ed48badfab5b35b117a9ac8be23aa986cfaa3636a37686fcf12
6
+ metadata.gz: 62c9ed6a7109e4034eb0907bd8fc1e862a79d902914a2658ff8959889352edc634b24be63f7fd4372ac144aaa200515f7a12a99de54f0c6dc4fa57008d7e8a91
7
+ data.tar.gz: 95fc7bdd5f57aadf8b64656f5bf6f9affb09a5f7d30f44a5bc3ddfb590ae8229348aca04c11c64ee381066b0ce76d2f415b3df2eb095848f9aa46fead6e7ddd6
@@ -13,6 +13,10 @@ class KMeansClusterer
13
13
  NMatrix.cast(x, typecode)
14
14
  end
15
15
  end
16
+
17
+ def self.ensure_narray x, typecode = nil
18
+ x.is_a?(NArray) ? x : NArray.cast(x, typecode)
19
+ end
16
20
  end
17
21
 
18
22
  module Scaler
@@ -121,12 +125,12 @@ class KMeansClusterer
121
125
  opts = DEFAULT_OPTS.merge(opts)
122
126
 
123
127
  opts[:k] = k
124
- opts[:typecode] = TYPECODE[opts[:float_precision]]
128
+ typecode = TYPECODE[opts[:float_precision]]
125
129
 
126
- data = Utils.ensure_matrix data, opts[:typecode]
130
+ data = Utils.ensure_matrix data, typecode
127
131
 
128
132
  if opts[:scale_data]
129
- data, mean, std = Scaler.scale(data, nil, nil, opts[:typecode])
133
+ data, mean, std = Scaler.scale(data, nil, nil, typecode)
130
134
  opts[:mean] = mean
131
135
  opts[:std] = std
132
136
  end
@@ -162,11 +166,11 @@ class KMeansClusterer
162
166
  @row_norms = opts[:row_norms]
163
167
 
164
168
  @data = opts[:data]
165
- @points_count = @data.shape[1] if @data
166
- @mean = opts[:mean]
167
- @std = opts[:std]
169
+ @points_count = @data ? @data.shape[1] : 0
170
+ @mean = Utils.ensure_narray(opts[:mean]) if opts[:mean]
171
+ @std = Utils.ensure_narray(opts[:std]) if opts[:std]
168
172
  @scale_data = opts[:scale_data]
169
- @typecode = opts[:typecode]
173
+ @typecode = TYPECODE[opts[:float_precision] || :double]
170
174
  @max_iter = opts[:max_iter]
171
175
 
172
176
  init_centroids
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.3
4
+ version: 0.11.4
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-04-06 00:00:00.000000000 Z
11
+ date: 2015-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: narray