kmeans 0.0.5 → 0.0.6

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