jubatus 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -1
- data/README.rst +1 -1
- data/Rakefile +8 -0
- data/VERSION +1 -1
- data/{test → integration_test}/jubatus_test/anomaly/test.rb +22 -23
- data/{test → integration_test}/jubatus_test/classifier/test.rb +10 -15
- data/integration_test/jubatus_test/clustering/test.rb +133 -0
- data/integration_test/jubatus_test/error/test.rb +51 -0
- data/{test → integration_test}/jubatus_test/graph/test.rb +15 -30
- data/integration_test/jubatus_test/nearest_neighbor/test.rb +86 -0
- data/integration_test/jubatus_test/recommender/test.rb +111 -0
- data/{test → integration_test}/jubatus_test/regression/test.rb +10 -15
- data/integration_test/jubatus_test/stat/test.rb +108 -0
- data/{test → integration_test}/jubatus_test/test_util.rb +1 -0
- data/jubatus.gemspec +1 -1
- data/lib/jubatus/anomaly/client.rb +34 -33
- data/lib/jubatus/anomaly/types.rb +30 -18
- data/lib/jubatus/classifier/client.rb +22 -28
- data/lib/jubatus/classifier/types.rb +56 -33
- data/lib/jubatus/clustering/client.rb +51 -0
- data/lib/jubatus/clustering/types.rb +44 -0
- data/lib/jubatus/common/client.rb +83 -0
- data/lib/jubatus/common/datum.rb +85 -0
- data/lib/jubatus/common/message_string_generator.rb +41 -0
- data/lib/jubatus/common/types.rb +247 -0
- data/lib/jubatus/common.rb +4 -0
- data/lib/jubatus/graph/client.rb +83 -60
- data/lib/jubatus/graph/types.rb +146 -85
- data/lib/jubatus/nearest_neighbor/client.rb +53 -0
- data/lib/jubatus/nearest_neighbor/types.rb +44 -0
- data/lib/jubatus/recommender/client.rb +50 -44
- data/lib/jubatus/recommender/types.rb +29 -26
- data/lib/jubatus/regression/client.rb +22 -28
- data/lib/jubatus/regression/types.rb +30 -18
- data/lib/jubatus/stat/client.rb +37 -38
- data/lib/jubatus/stat/types.rb +5 -4
- data/test/jubatus_test/common/client_test.rb +104 -0
- data/test/jubatus_test/common/datum_test.rb +43 -0
- data/test/jubatus_test/common/message_string_generator_test.rb +50 -0
- data/test/jubatus_test/common/types_test.rb +73 -0
- metadata +29 -16
- data/test/jubatus_test/recommender/test.rb +0 -122
- data/test/jubatus_test/stat/test.rb +0 -109
@@ -5,7 +5,6 @@ require 'test/unit'
|
|
5
5
|
require 'json'
|
6
6
|
|
7
7
|
require 'jubatus/regression/client'
|
8
|
-
require 'jubatus/regression/types'
|
9
8
|
require 'jubatus_test/test_util'
|
10
9
|
|
11
10
|
class RegressionTest < Test::Unit::TestCase
|
@@ -34,7 +33,7 @@ class RegressionTest < Test::Unit::TestCase
|
|
34
33
|
|
35
34
|
TestUtil.write_file("config_regression.json", @config.to_json)
|
36
35
|
@srv = TestUtil.fork_process("regression", PORT, "config_regression.json")
|
37
|
-
@cli = Jubatus::Regression::Client::Regression.new(HOST, PORT)
|
36
|
+
@cli = Jubatus::Regression::Client::Regression.new(HOST, PORT, "name")
|
38
37
|
end
|
39
38
|
|
40
39
|
def teardown
|
@@ -46,38 +45,34 @@ class RegressionTest < Test::Unit::TestCase
|
|
46
45
|
end
|
47
46
|
|
48
47
|
def test_get_config
|
49
|
-
config = @cli.get_config
|
48
|
+
config = @cli.get_config
|
50
49
|
assert_equal(JSON.parse(config), @config)
|
51
50
|
end
|
52
51
|
|
53
52
|
def test_train
|
54
|
-
|
55
|
-
num_values = [["key1", 1.0], ["key2", 2.0]]
|
56
|
-
d = Jubatus::Regression::Datum.new(string_values, num_values)
|
53
|
+
d = Jubatus::Common::Datum.new("skey1" => "val1", "skey2" => "val2", "nkey1" => 1.0, "nkey2" => 2.0)
|
57
54
|
data = [[1.0, d]]
|
58
|
-
assert_equal(@cli.train(
|
55
|
+
assert_equal(@cli.train(data), 1)
|
59
56
|
end
|
60
57
|
|
61
58
|
def test_estimate
|
62
|
-
|
63
|
-
num_values = [["key1", 1.0], ["key2", 2.0]]
|
64
|
-
d = Jubatus::Regression::Datum.new(string_values, num_values)
|
59
|
+
d = Jubatus::Common::Datum.new("skey1" => "val1", "skey2" => "val2", "nkey1" => 1.0, "nkey2" => 2.0)
|
65
60
|
data = [d]
|
66
|
-
result = @cli.estimate(
|
61
|
+
result = @cli.estimate(data)
|
67
62
|
end
|
68
63
|
|
69
64
|
def test_save
|
70
|
-
assert_equal(@cli.save("
|
65
|
+
assert_equal(@cli.save("regression.save_test.model"), true)
|
71
66
|
end
|
72
67
|
|
73
68
|
def test_load
|
74
69
|
model_name = "regression.load_test.model"
|
75
|
-
@cli.save(
|
76
|
-
assert_equal(@cli.load(
|
70
|
+
@cli.save(model_name)
|
71
|
+
assert_equal(@cli.load(model_name), true)
|
77
72
|
end
|
78
73
|
|
79
74
|
def test_get_status
|
80
|
-
@cli.get_status
|
75
|
+
@cli.get_status
|
81
76
|
end
|
82
77
|
|
83
78
|
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
require 'jubatus/stat/client'
|
8
|
+
require 'jubatus_test/test_util'
|
9
|
+
|
10
|
+
class StatTest < Test::Unit::TestCase
|
11
|
+
HOST = "127.0.0.1"
|
12
|
+
PORT = 23004
|
13
|
+
TIMEOUT = 10
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@config = {
|
17
|
+
"window_size" => 10
|
18
|
+
}
|
19
|
+
|
20
|
+
TestUtil.write_file("config_stat.json", @config.to_json)
|
21
|
+
@srv = TestUtil.fork_process("stat", PORT, "config_stat.json")
|
22
|
+
@cli = Jubatus::Stat::Client::Stat.new(HOST, PORT, "name")
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
TestUtil.kill_process(@srv)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_get_client
|
31
|
+
assert_instance_of( MessagePack::RPC::Client, @cli.get_client )
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_get_config
|
35
|
+
config = @cli.get_config
|
36
|
+
assert_equal(JSON.parse(config), @config)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_stddev
|
40
|
+
@cli.push("stddev", 1.0)
|
41
|
+
@cli.push("stddev", 2.0)
|
42
|
+
@cli.push("stddev", 3.0)
|
43
|
+
@cli.push("stddev", 4.0)
|
44
|
+
@cli.push("stddev", 5.0)
|
45
|
+
assert_equal(@cli.stddev("stddev"), Math::sqrt(2.0))
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_sum
|
49
|
+
@cli.push("sum", 1.0)
|
50
|
+
@cli.push("sum", 2.0)
|
51
|
+
@cli.push("sum", 3.0)
|
52
|
+
@cli.push("sum", 4.0)
|
53
|
+
@cli.push("sum", 5.0)
|
54
|
+
assert_equal(@cli.sum("sum"), 15.0)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_max
|
58
|
+
@cli.push("max", 1.0)
|
59
|
+
@cli.push("max", 2.0)
|
60
|
+
@cli.push("max", 3.0)
|
61
|
+
@cli.push("max", 4.0)
|
62
|
+
@cli.push("max", 5.0)
|
63
|
+
assert_equal(@cli.max("max"), 5.0)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_min
|
67
|
+
@cli.push("min", 1.0)
|
68
|
+
@cli.push("min", 2.0)
|
69
|
+
@cli.push("min", 3.0)
|
70
|
+
@cli.push("min", 4.0)
|
71
|
+
@cli.push("min", 5.0)
|
72
|
+
assert_equal(@cli.min("min"), 1.0)
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_entropy
|
76
|
+
@cli.push("entropy", 1.0)
|
77
|
+
@cli.push("entropy", 2.0)
|
78
|
+
@cli.push("entropy", 3.0)
|
79
|
+
@cli.push("entropy", 4.0)
|
80
|
+
@cli.push("entropy", 5.0)
|
81
|
+
assert_equal(@cli.entropy("entropy"), 0.0)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_moment
|
85
|
+
@cli.push("moment", 1.0)
|
86
|
+
@cli.push("moment", 2.0)
|
87
|
+
@cli.push("moment", 3.0)
|
88
|
+
@cli.push("moment", 4.0)
|
89
|
+
@cli.push("moment", 5.0)
|
90
|
+
assert_equal(@cli.moment("moment", 3, 0.0), 45.0)
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_save
|
94
|
+
assert_equal(@cli.save("stat.save_test.model"), true)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_load
|
98
|
+
model_name = "stat.load_test.model"
|
99
|
+
@cli.save(model_name)
|
100
|
+
assert_equal(@cli.load(model_name), true)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_get_status
|
104
|
+
@cli.get_status
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
data/jubatus.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.has_rdoc = false
|
13
13
|
gem.license = "MIT"
|
14
14
|
|
15
|
-
files = `git ls-files`.split("\n")
|
15
|
+
files = `git ls-files`.split("\n") + Dir.glob("lib/jubatus/**/*.rb")
|
16
16
|
excludes = ["patch/*", "generate.sh"]
|
17
17
|
|
18
18
|
gem.files = files.reject { |f| excludes.any? { |e| File.fnmatch(e, f) } }
|
@@ -1,53 +1,54 @@
|
|
1
|
-
# This file is auto-generated from anomaly.idl
|
1
|
+
# This file is auto-generated from anomaly.idl(0.4.5-347-g86989a6) with jenerator version 0.4.5-418-gd2d5f04/develop
|
2
2
|
# *** DO NOT EDIT ***
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'msgpack/rpc'
|
6
|
+
require 'jubatus/common'
|
6
7
|
require File.join(File.dirname(__FILE__), 'types')
|
7
8
|
|
8
9
|
module Jubatus
|
10
|
+
|
9
11
|
module Anomaly
|
10
12
|
module Client
|
11
13
|
|
12
|
-
class Anomaly
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def get_client
|
17
|
-
@cli
|
18
|
-
end
|
19
|
-
def get_config(name)
|
20
|
-
@cli.call(:get_config, name)
|
21
|
-
end
|
22
|
-
def clear_row(name, id)
|
23
|
-
@cli.call(:clear_row, name, id)
|
14
|
+
class Anomaly < Jubatus::Common::ClientBase
|
15
|
+
include Jubatus::Common
|
16
|
+
def initialize(host, port, name, timeout_sec=10)
|
17
|
+
super
|
24
18
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
def update(name, id, row)
|
29
|
-
@cli.call(:update, name, id, row)
|
19
|
+
|
20
|
+
def clear_row(id)
|
21
|
+
@jubatus_client.call("clear_row", [id], TBool.new, [TString.new])
|
30
22
|
end
|
31
|
-
|
32
|
-
|
23
|
+
|
24
|
+
def add(row)
|
25
|
+
@jubatus_client.call("add", [row], TUserDef.new(IdWithScore), [TDatum.new])
|
33
26
|
end
|
34
|
-
|
35
|
-
|
27
|
+
|
28
|
+
def update(id, row)
|
29
|
+
@jubatus_client.call("update", [id, row], TFloat.new, [TString.new,
|
30
|
+
TDatum.new])
|
36
31
|
end
|
37
|
-
|
38
|
-
|
32
|
+
|
33
|
+
def overwrite(id, row)
|
34
|
+
@jubatus_client.call("overwrite", [id, row], TFloat.new, [TString.new,
|
35
|
+
TDatum.new])
|
39
36
|
end
|
40
|
-
|
41
|
-
|
37
|
+
|
38
|
+
def clear
|
39
|
+
@jubatus_client.call("clear", [], TBool.new, [])
|
42
40
|
end
|
43
|
-
|
44
|
-
|
41
|
+
|
42
|
+
def calc_score(row)
|
43
|
+
@jubatus_client.call("calc_score", [row], TFloat.new, [TDatum.new])
|
45
44
|
end
|
46
|
-
|
47
|
-
|
45
|
+
|
46
|
+
def get_all_rows
|
47
|
+
@jubatus_client.call("get_all_rows", [], TList.new(TString.new), [])
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
51
|
+
end # Client
|
52
|
+
end # Anomaly
|
53
|
+
|
54
|
+
end # Jubatus
|
@@ -1,32 +1,44 @@
|
|
1
|
-
# This file is auto-generated from anomaly.idl
|
1
|
+
# This file is auto-generated from anomaly.idl(0.4.5-347-g86989a6) with jenerator version 0.4.5-418-gd2d5f04/develop
|
2
2
|
# *** DO NOT EDIT ***
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'msgpack/rpc'
|
6
|
+
require 'jubatus/common'
|
7
|
+
|
6
8
|
module Jubatus
|
7
9
|
module Anomaly
|
8
10
|
|
9
|
-
class
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
@num_values.map {|x| [x[0], x[1], ] }]
|
11
|
+
class IdWithScore
|
12
|
+
include Jubatus::Common
|
13
|
+
TYPE = TTuple.new(TString.new, TFloat.new)
|
14
|
+
|
15
|
+
def initialize(id, score)
|
16
|
+
@id = id
|
17
|
+
@score = score
|
17
18
|
end
|
19
|
+
|
18
20
|
def to_msgpack(out = '')
|
19
|
-
|
21
|
+
t = [@id, @score]
|
22
|
+
return TYPE.to_msgpack(t)
|
23
|
+
end
|
24
|
+
|
25
|
+
def IdWithScore.from_msgpack(m)
|
26
|
+
val = TYPE.from_msgpack(m)
|
27
|
+
IdWithScore.new(*val)
|
20
28
|
end
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
)
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
gen = Jubatus::Common::MessageStringGenerator.new
|
32
|
+
gen.open("id_with_score")
|
33
|
+
gen.add("id", @id)
|
34
|
+
gen.add("score", @score)
|
35
|
+
gen.close()
|
36
|
+
return gen.to_s
|
26
37
|
end
|
27
|
-
attr_accessor :string_values, :num_values
|
28
|
-
end
|
29
38
|
|
30
|
-
|
39
|
+
attr_reader :id, :score
|
40
|
+
|
31
41
|
end
|
32
42
|
|
43
|
+
end # Anomaly
|
44
|
+
end # Jubatus
|
@@ -1,44 +1,38 @@
|
|
1
|
-
# This file is auto-generated from classifier.idl
|
1
|
+
# This file is auto-generated from classifier.idl(0.4.5-347-g86989a6) with jenerator version 0.4.5-418-gd2d5f04/develop
|
2
2
|
# *** DO NOT EDIT ***
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'msgpack/rpc'
|
6
|
+
require 'jubatus/common'
|
6
7
|
require File.join(File.dirname(__FILE__), 'types')
|
7
8
|
|
8
9
|
module Jubatus
|
10
|
+
|
9
11
|
module Classifier
|
10
12
|
module Client
|
11
13
|
|
12
|
-
class Classifier
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def get_client
|
17
|
-
@cli
|
18
|
-
end
|
19
|
-
def get_config(name)
|
20
|
-
@cli.call(:get_config, name)
|
21
|
-
end
|
22
|
-
def train(name, data)
|
23
|
-
@cli.call(:train, name, data)
|
14
|
+
class Classifier < Jubatus::Common::ClientBase
|
15
|
+
include Jubatus::Common
|
16
|
+
def initialize(host, port, name, timeout_sec=10)
|
17
|
+
super
|
24
18
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
@cli.call(:clear, name)
|
30
|
-
end
|
31
|
-
def save(name, id)
|
32
|
-
@cli.call(:save, name, id)
|
19
|
+
|
20
|
+
def train(data)
|
21
|
+
@jubatus_client.call("train", [data], TInt.new(true, 4), [TList.new(
|
22
|
+
TUserDef.new(LabeledDatum))])
|
33
23
|
end
|
34
|
-
|
35
|
-
|
24
|
+
|
25
|
+
def classify(data)
|
26
|
+
@jubatus_client.call("classify", [data], TList.new(TList.new(TUserDef.new(
|
27
|
+
EstimateResult))), [TList.new(TDatum.new)])
|
36
28
|
end
|
37
|
-
|
38
|
-
|
29
|
+
|
30
|
+
def clear
|
31
|
+
@jubatus_client.call("clear", [], TBool.new, [])
|
39
32
|
end
|
40
33
|
end
|
41
34
|
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
35
|
+
end # Client
|
36
|
+
end # Classifier
|
37
|
+
|
38
|
+
end # Jubatus
|
@@ -1,53 +1,76 @@
|
|
1
|
-
# This file is auto-generated from classifier.idl
|
1
|
+
# This file is auto-generated from classifier.idl(0.4.5-347-g86989a6) with jenerator version 0.4.5-418-gd2d5f04/develop
|
2
2
|
# *** DO NOT EDIT ***
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'msgpack/rpc'
|
6
|
+
require 'jubatus/common'
|
7
|
+
|
6
8
|
module Jubatus
|
7
9
|
module Classifier
|
8
10
|
|
9
|
-
class
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
@num_values.map {|x| [x[0], x[1], ] }]
|
11
|
+
class EstimateResult
|
12
|
+
include Jubatus::Common
|
13
|
+
TYPE = TTuple.new(TString.new, TFloat.new)
|
14
|
+
|
15
|
+
def initialize(label, score)
|
16
|
+
@label = label
|
17
|
+
@score = score
|
17
18
|
end
|
19
|
+
|
18
20
|
def to_msgpack(out = '')
|
19
|
-
|
21
|
+
t = [@label, @score]
|
22
|
+
return TYPE.to_msgpack(t)
|
20
23
|
end
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
)
|
24
|
+
|
25
|
+
def EstimateResult.from_msgpack(m)
|
26
|
+
val = TYPE.from_msgpack(m)
|
27
|
+
EstimateResult.new(*val)
|
26
28
|
end
|
27
|
-
attr_accessor :string_values, :num_values
|
28
|
-
end
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
def to_s
|
31
|
+
gen = Jubatus::Common::MessageStringGenerator.new
|
32
|
+
gen.open("estimate_result")
|
33
|
+
gen.add("label", @label)
|
34
|
+
gen.add("score", @score)
|
35
|
+
gen.close()
|
36
|
+
return gen.to_s
|
34
37
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
+
|
39
|
+
attr_reader :label, :score
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
class LabeledDatum
|
44
|
+
include Jubatus::Common
|
45
|
+
TYPE = TTuple.new(TString.new, TDatum.new)
|
46
|
+
|
47
|
+
def initialize(label, data)
|
48
|
+
@label = label
|
49
|
+
@data = data
|
38
50
|
end
|
51
|
+
|
39
52
|
def to_msgpack(out = '')
|
40
|
-
|
53
|
+
t = [@label, @data]
|
54
|
+
return TYPE.to_msgpack(t)
|
55
|
+
end
|
56
|
+
|
57
|
+
def LabeledDatum.from_msgpack(m)
|
58
|
+
val = TYPE.from_msgpack(m)
|
59
|
+
LabeledDatum.new(*val)
|
41
60
|
end
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
)
|
61
|
+
|
62
|
+
def to_s
|
63
|
+
gen = Jubatus::Common::MessageStringGenerator.new
|
64
|
+
gen.open("labeled_datum")
|
65
|
+
gen.add("label", @label)
|
66
|
+
gen.add("data", @data)
|
67
|
+
gen.close()
|
68
|
+
return gen.to_s
|
47
69
|
end
|
48
|
-
attr_accessor :label, :score
|
49
|
-
end
|
50
70
|
|
51
|
-
|
71
|
+
attr_reader :label, :data
|
72
|
+
|
52
73
|
end
|
53
74
|
|
75
|
+
end # Classifier
|
76
|
+
end # Jubatus
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# This file is auto-generated from clustering.idl(0.4.5-350-g9c67807) with jenerator version 0.4.5-418-gd2d5f04/develop
|
2
|
+
# *** DO NOT EDIT ***
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'msgpack/rpc'
|
6
|
+
require 'jubatus/common'
|
7
|
+
require File.join(File.dirname(__FILE__), 'types')
|
8
|
+
|
9
|
+
module Jubatus
|
10
|
+
|
11
|
+
module Clustering
|
12
|
+
module Client
|
13
|
+
|
14
|
+
class Clustering < Jubatus::Common::ClientBase
|
15
|
+
include Jubatus::Common
|
16
|
+
def initialize(host, port, name, timeout_sec=10)
|
17
|
+
super
|
18
|
+
end
|
19
|
+
|
20
|
+
def push(points)
|
21
|
+
@jubatus_client.call("push", [points], TBool.new, [TList.new(TDatum.new)])
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_revision
|
25
|
+
@jubatus_client.call("get_revision", [], TInt.new(false, 4), [])
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_core_members
|
29
|
+
@jubatus_client.call("get_core_members", [], TList.new(TList.new(
|
30
|
+
TUserDef.new(WeightedDatum))), [])
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_k_center
|
34
|
+
@jubatus_client.call("get_k_center", [], TList.new(TDatum.new), [])
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_nearest_center(point)
|
38
|
+
@jubatus_client.call("get_nearest_center", [point], TDatum.new,
|
39
|
+
[TDatum.new])
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_nearest_members(point)
|
43
|
+
@jubatus_client.call("get_nearest_members", [point], TList.new(TUserDef.new(
|
44
|
+
WeightedDatum)), [TDatum.new])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end # Client
|
49
|
+
end # Clustering
|
50
|
+
|
51
|
+
end # Jubatus
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# This file is auto-generated from clustering.idl(0.4.5-350-g9c67807) with jenerator version 0.4.5-418-gd2d5f04/develop
|
2
|
+
# *** DO NOT EDIT ***
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'msgpack/rpc'
|
6
|
+
require 'jubatus/common'
|
7
|
+
|
8
|
+
module Jubatus
|
9
|
+
module Clustering
|
10
|
+
|
11
|
+
class WeightedDatum
|
12
|
+
include Jubatus::Common
|
13
|
+
TYPE = TTuple.new(TFloat.new, TDatum.new)
|
14
|
+
|
15
|
+
def initialize(weight, point)
|
16
|
+
@weight = weight
|
17
|
+
@point = point
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_msgpack(out = '')
|
21
|
+
t = [@weight, @point]
|
22
|
+
return TYPE.to_msgpack(t)
|
23
|
+
end
|
24
|
+
|
25
|
+
def WeightedDatum.from_msgpack(m)
|
26
|
+
val = TYPE.from_msgpack(m)
|
27
|
+
WeightedDatum.new(*val)
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
gen = Jubatus::Common::MessageStringGenerator.new
|
32
|
+
gen.open("weighted_datum")
|
33
|
+
gen.add("weight", @weight)
|
34
|
+
gen.add("point", @point)
|
35
|
+
gen.close()
|
36
|
+
return gen.to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
attr_reader :weight, :point
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end # Clustering
|
44
|
+
end # Jubatus
|