kmeans 0.0.5 → 0.0.6

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
data/doc/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.0.6 / 2012-11-02
2
+
3
+ * Correspond to unequal hash.
4
+
5
+
1
6
  === 0.0.5 / 2012-10-30
2
7
 
3
8
  * Eliminate the dependency for RMagick.
data/kmeans.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "kmeans"
8
- s.version = "0.0.5"
8
+ s.version = "0.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["id774"]
12
- s.date = "2012-10-30"
12
+ s.date = "2012-11-02"
13
13
  s.description = "K-means clustering"
14
14
  s.email = "idnanashi@gmail.com"
15
15
  s.extra_rdoc_files = [
data/lib/kmeans.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  module Kmeans
5
- VERSION = "0.0.5"
5
+ VERSION = "0.0.6"
6
6
  require File.dirname(__FILE__) + "/kmeans/pair"
7
7
  require File.dirname(__FILE__) + "/kmeans/pearson"
8
8
  require File.dirname(__FILE__) + "/kmeans/cluster"
@@ -88,7 +88,10 @@ module Kmeans
88
88
  average_word_counts = @cluster[centroid].map {|url|
89
89
  @centroids[centroid].keys.map {|word| @word_counts[url][word]}
90
90
  }.transpose.map {|all_counts|
91
- all_counts.inject(0) {|sum, count|sum + count}.quo(all_counts.size)
91
+ all_counts.inject(0) {|sum, count|
92
+ count = 0 unless count.class == Fixnum
93
+ sum + count
94
+ }.quo(all_counts.size)
92
95
  }
93
96
  Hash[*@centroids[centroid].keys.zip(average_word_counts).flatten]
94
97
  end
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
4
4
 
5
5
  describe Kmeans::Cluster do
6
6
  before :all do
7
- @testdata = {
7
+ @uniform_hash = {
8
8
  "test01"=>
9
9
  {"hoge"=>0,
10
10
  "fuga"=>1,
@@ -36,23 +36,74 @@ describe Kmeans::Cluster do
36
36
  "piyo"=>1
37
37
  }
38
38
  }
39
+
40
+ @unequal_hash = {
41
+ "test01"=>
42
+ {"hoge"=>0,
43
+ "fuga"=>1,
44
+ "piyo"=>0
45
+ },
46
+ "test02"=>
47
+ {"hoge"=>2,
48
+ "fuga"=>1,
49
+ "piyo"=>3
50
+ },
51
+ "test03"=>
52
+ {"hoge"=>3,
53
+ "fuga"=>0,
54
+ "poyo"=>1
55
+ },
56
+ "test04"=>
57
+ {"puyo"=>0,
58
+ "fuga"=>2,
59
+ "piyo"=>0
60
+ },
61
+ "test05"=>
62
+ {"hoge"=>4,
63
+ "fuga"=>2,
64
+ "poyo"=>3
65
+ },
66
+ "test06"=>
67
+ {"hoge"=>3,
68
+ "hohe"=>1,
69
+ "piyo"=>1
70
+ }
71
+ }
39
72
  end
40
73
 
41
74
  context 'の Cluster クラスにおいて' do
42
- describe '二次元ハッシュを渡すと' do
75
+ describe 'キーの均一な二次元ハッシュを渡すと' do
43
76
  it "Kmeans::Cluster クラスが返却される" do
44
- result = Kmeans::Cluster.new(@testdata, {
45
- :centroids => 4,
77
+ result = Kmeans::Cluster.new(@uniform_hash, {
78
+ :centroids => 5,
46
79
  :loop_max => 10
47
80
  })
48
81
  result.class.should be_equal Kmeans::Cluster
49
82
  end
83
+
84
+ it "ハッシュの配列が返却される (結果は実行ごとに異なる)" do
85
+ result = Kmeans::Cluster.new(@uniform_hash, {
86
+ :centroids => 5,
87
+ :loop_max => 10
88
+ })
89
+ result.make_cluster
90
+ result.cluster.class.should be_equal Hash
91
+ result.cluster.values.class.should be_equal Array
92
+ end
50
93
  end
51
94
 
52
- describe 'make_cluster メソッドを呼ぶと' do
95
+ describe 'キーの不均一な二次元ハッシュを渡すと' do
96
+ it "Kmeans::Cluster クラスが返却される" do
97
+ result = Kmeans::Cluster.new(@unequal_hash, {
98
+ :centroids => 5,
99
+ :loop_max => 10
100
+ })
101
+ result.class.should be_equal Kmeans::Cluster
102
+ end
103
+
53
104
  it "ハッシュの配列が返却される (結果は実行ごとに異なる)" do
54
- result = Kmeans::Cluster.new(@testdata, {
55
- :centroids => 4,
105
+ result = Kmeans::Cluster.new(@unequal_hash, {
106
+ :centroids => 5,
56
107
  :loop_max => 10
57
108
  })
58
109
  result.make_cluster
@@ -5,7 +5,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
5
5
  describe Kmeans do
6
6
  context 'のバージョンを参照した場合' do
7
7
  it "バージョンが正しく表示される" do
8
- expect = '0.0.5'
8
+ expect = '0.0.6'
9
9
  Kmeans.const_get(:VERSION).should be_true
10
10
  Kmeans.const_get(:VERSION).should == expect
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kmeans
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-30 00:00:00.000000000 Z
12
+ date: 2012-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber