jubatus 0.1.0 → 0.4.0
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/.gitignore +3 -0
- data/LICENSE +5 -21
- data/README.rst +22 -0
- data/Rakefile +15 -10
- data/VERSION +1 -1
- data/generate.sh +31 -0
- data/jubatus.gemspec +13 -9
- data/lib/jubatus/classifier/client.rb +4 -26
- data/lib/jubatus/classifier/types.rb +7 -56
- data/lib/jubatus/graph/client.rb +42 -61
- data/lib/jubatus/graph/types.rb +36 -64
- data/lib/jubatus/recommender/client.rb +14 -36
- data/lib/jubatus/recommender/types.rb +3 -43
- data/lib/jubatus/regression/client.rb +8 -30
- data/lib/jubatus/regression/types.rb +3 -52
- data/lib/jubatus/stat/client.rb +8 -30
- data/lib/jubatus/stat/types.rb +2 -39
- data/test/jubatus_test/anomaly/test.rb +106 -0
- data/test/jubatus_test/classifier/test.rb +91 -0
- data/test/jubatus_test/graph/test.rb +90 -0
- data/test/jubatus_test/recommender/test.rb +138 -0
- data/test/jubatus_test/regression/test.rb +92 -0
- data/test/jubatus_test/stat/test.rb +125 -0
- data/test/jubatus_test/test_util.rb +49 -0
- metadata +69 -69
- data/README.md +0 -30
data/lib/jubatus/stat/client.rb
CHANGED
@@ -1,25 +1,4 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2012 Preferred Infrastructure, inc.
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
-
# of this software and associated documentation files (the "Software"), to deal
|
6
|
-
# in the Software without restriction, including without limitation the rights
|
7
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
-
# copies of the Software, and to permit persons to whom the Software is
|
9
|
-
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be included in
|
12
|
-
# all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
-
# SOFTWARE.
|
21
|
-
#
|
22
|
-
# This file is auto-generated from ./jubatus/jubatus.github/src/server//stat.idl
|
1
|
+
# This file is auto-generated from jubatus-generate/src/server/stat.idl
|
23
2
|
# *** DO NOT EDIT ***
|
24
3
|
|
25
4
|
require 'rubygems'
|
@@ -27,20 +6,18 @@ require 'msgpack/rpc'
|
|
27
6
|
require File.join(File.dirname(__FILE__), 'types')
|
28
7
|
|
29
8
|
module Jubatus
|
9
|
+
module Stat
|
30
10
|
module Client
|
31
11
|
|
32
12
|
class Stat
|
33
13
|
def initialize(host, port)
|
34
14
|
@cli = MessagePack::RPC::Client.new(host, port)
|
35
15
|
end
|
36
|
-
def set_config(name, c)
|
37
|
-
@cli.call(:set_config, name, c)
|
38
|
-
end
|
39
16
|
def get_config(name)
|
40
|
-
|
17
|
+
@cli.call(:get_config, name)
|
41
18
|
end
|
42
|
-
def push(name, key,
|
43
|
-
@cli.call(:push, name, key,
|
19
|
+
def push(name, key, value)
|
20
|
+
@cli.call(:push, name, key, value)
|
44
21
|
end
|
45
22
|
def sum(name, key)
|
46
23
|
@cli.call(:sum, name, key)
|
@@ -57,8 +34,8 @@ class Stat
|
|
57
34
|
def entropy(name, key)
|
58
35
|
@cli.call(:entropy, name, key)
|
59
36
|
end
|
60
|
-
def moment(name, key,
|
61
|
-
@cli.call(:moment, name, key,
|
37
|
+
def moment(name, key, degree, center)
|
38
|
+
@cli.call(:moment, name, key, degree, center)
|
62
39
|
end
|
63
40
|
def save(name, id)
|
64
41
|
@cli.call(:save, name, id)
|
@@ -73,3 +50,4 @@ end
|
|
73
50
|
|
74
51
|
end
|
75
52
|
end
|
53
|
+
end
|
data/lib/jubatus/stat/types.rb
CHANGED
@@ -1,48 +1,11 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2012 Preferred Infrastructure, inc.
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
-
# of this software and associated documentation files (the "Software"), to deal
|
6
|
-
# in the Software without restriction, including without limitation the rights
|
7
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
-
# copies of the Software, and to permit persons to whom the Software is
|
9
|
-
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be included in
|
12
|
-
# all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
-
# SOFTWARE.
|
21
|
-
#
|
22
|
-
# This file is auto-generated from ./jubatus/jubatus.github/src/server//stat.idl
|
1
|
+
# This file is auto-generated from jubatus-generate/src/server/stat.idl
|
23
2
|
# *** DO NOT EDIT ***
|
24
3
|
|
25
4
|
require 'rubygems'
|
26
5
|
require 'msgpack/rpc'
|
27
6
|
module Jubatus
|
7
|
+
module Stat
|
28
8
|
|
29
|
-
class Config_data
|
30
|
-
def initialize(window_size)
|
31
|
-
@window_size = window_size
|
32
|
-
end
|
33
|
-
def to_tuple
|
34
|
-
[@window_size]
|
35
|
-
end
|
36
|
-
def to_msgpack(out = '')
|
37
|
-
to_tuple.to_msgpack(out)
|
38
|
-
end
|
39
|
-
def Config_data.from_tuple(tuple)
|
40
|
-
Config_data.new(
|
41
|
-
tuple[0]
|
42
|
-
)
|
43
|
-
end
|
44
|
-
attr_accessor :window_size
|
45
9
|
end
|
46
|
-
|
47
10
|
end
|
48
11
|
|
@@ -0,0 +1,106 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
require 'jubatus/anomaly/client'
|
8
|
+
require 'jubatus/anomaly/types'
|
9
|
+
require 'jubatus_test/test_util'
|
10
|
+
|
11
|
+
class AnomalyTest < Test::Unit::TestCase
|
12
|
+
HOST = "127.0.0.1"
|
13
|
+
PORT = 23006
|
14
|
+
TIMEOUT = 10
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@config = {
|
18
|
+
"method" => "lof",
|
19
|
+
"converter" => {
|
20
|
+
"string_filter_types" => {},
|
21
|
+
"string_filter_rules" => [],
|
22
|
+
"num_filter_types" => {},
|
23
|
+
"num_filter_rules" => [],
|
24
|
+
"string_types" => {},
|
25
|
+
"string_rules" => [{"key" => "*", "type" => "str", "sample_weight" => "bin", "global_weight" => "bin"}],
|
26
|
+
"num_types" => {},
|
27
|
+
"num_rules" => [{"key" => "*", "type" => "num"}]
|
28
|
+
},
|
29
|
+
"parameter" => {
|
30
|
+
"nearest_neighbor_num" => 10,
|
31
|
+
"reverse_nearest_neighbor_num" => 30,
|
32
|
+
"method" => "euclid_lsh",
|
33
|
+
"parameter" => {
|
34
|
+
"lsh_num" => 8,
|
35
|
+
"table_num" => 16,
|
36
|
+
"probe_num" => 64,
|
37
|
+
"bin_width" => 10.0,
|
38
|
+
"seed" => 1091,
|
39
|
+
"retain_projection" => false
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
TestUtil.write_file("config_anomaly.json", @config.to_json)
|
45
|
+
@srv = TestUtil.fork_process("anomaly", PORT, "config_anomaly.json")
|
46
|
+
@cli = Jubatus::Anomaly::Client::Anomaly.new(HOST, PORT)
|
47
|
+
end
|
48
|
+
|
49
|
+
def teardown
|
50
|
+
TestUtil.kill_process(@srv)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_clear_row
|
54
|
+
d = Jubatus::Anomaly::Datum.new([], [])
|
55
|
+
(row_id, score) = @cli.add("name", d)
|
56
|
+
assert_equal(true, @cli.clear_row("name", row_id))
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_add
|
60
|
+
d = Jubatus::Anomaly::Datum.new([], [])
|
61
|
+
(row_id, score) = @cli.add("name", d)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_update
|
65
|
+
d = Jubatus::Anomaly::Datum.new([], [])
|
66
|
+
(row_id, score) = @cli.add("name", d)
|
67
|
+
d = Jubatus::Anomaly::Datum.new([], [['val', 3.1]])
|
68
|
+
score = @cli.update("name", row_id, d)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_clear
|
72
|
+
assert_equal(true, @cli.clear("name"))
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_calc_score
|
76
|
+
d = Jubatus::Anomaly::Datum.new([], [['val', 1.1]])
|
77
|
+
(row_id, score) = @cli.add("name", d)
|
78
|
+
d = Jubatus::Anomaly::Datum.new([], [['val', 3.1]])
|
79
|
+
score = @cli.calc_score("name", d)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_get_all_rows
|
83
|
+
@cli.get_all_rows("name")
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_get_config
|
87
|
+
config = @cli.get_config("name")
|
88
|
+
assert_equal(JSON.parse(config).to_json, @config.to_json)
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_save
|
92
|
+
assert_equal(true, @cli.save("name", "anomaly.save_test.model"))
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
def test_load
|
97
|
+
model_name = "anomaly.load_test.model"
|
98
|
+
@cli.save("name", model_name)
|
99
|
+
assert_equal(true, @cli.load("name", model_name))
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_get_status
|
103
|
+
@cli.get_status("name")
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
require 'jubatus/classifier/client'
|
8
|
+
require 'jubatus/classifier/types'
|
9
|
+
require 'jubatus_test/test_util'
|
10
|
+
|
11
|
+
class ClassifierTest < Test::Unit::TestCase
|
12
|
+
HOST = "127.0.0.1"
|
13
|
+
PORT = 23001
|
14
|
+
TIMEOUT = 10
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@config = {
|
18
|
+
"method" => "AROW",
|
19
|
+
"converter" => {
|
20
|
+
"string_filter_types" => {},
|
21
|
+
"string_filter_rules" => [],
|
22
|
+
"num_filter_types" => {},
|
23
|
+
"num_filter_rules" => [],
|
24
|
+
"string_types" => {},
|
25
|
+
"string_rules" => [{"key" => "*", "type" => "str", "sample_weight" => "bin", "global_weight" => "bin"}],
|
26
|
+
"num_types" => {},
|
27
|
+
"num_rules" => [{"key" => "*", "type" => "num"}]
|
28
|
+
},
|
29
|
+
"parameter" => {
|
30
|
+
"regularization_weight" => 1.001
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
TestUtil.write_file("config_classifier.json", @config.to_json)
|
35
|
+
@srv = TestUtil.fork_process("classifier", PORT, "config_classifier.json")
|
36
|
+
@cli = Jubatus::Classifier::Client::Classifier.new(HOST, PORT)
|
37
|
+
end
|
38
|
+
|
39
|
+
def teardown
|
40
|
+
TestUtil.kill_process(@srv)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_get_config
|
44
|
+
config = @cli.get_config("name")
|
45
|
+
assert_equal(@config.to_json, JSON.parse(config).to_json)
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
def test_train
|
51
|
+
string_values = [["key1", "val1"], ["key2", "val2"]]
|
52
|
+
num_values = [["key1", 1.0], ["key2", 2.0]]
|
53
|
+
d = Jubatus::Classifier::Datum.new(string_values, num_values)
|
54
|
+
data = [["label", d]]
|
55
|
+
assert_equal(@cli.train("name", data), 1)
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
def test_classify
|
61
|
+
string_values = [["key1", "val1"], ["key2", "val2"]]
|
62
|
+
num_values = [["key1", 1.0], ["key2", 2.0]]
|
63
|
+
d = Jubatus::Classifier::Datum.new(string_values, num_values)
|
64
|
+
data = [d]
|
65
|
+
result = @cli.classify("name", data)
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
def test_save
|
71
|
+
assert_equal(@cli.save("name", "classifier.save_test.model"), true)
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
def test_load
|
77
|
+
model_name = "classifier.load_test.model"
|
78
|
+
@cli.save("name", model_name)
|
79
|
+
assert_equal(@cli.load("name", model_name), true)
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
def test_get_status
|
85
|
+
@cli.get_status("name")
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
end
|
91
|
+
|
@@ -0,0 +1,90 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'jubatus_test/test_util'
|
5
|
+
|
6
|
+
require 'json'
|
7
|
+
|
8
|
+
require 'jubatus/graph/client'
|
9
|
+
require 'jubatus/graph/types'
|
10
|
+
|
11
|
+
class GraphTest < Test::Unit::TestCase
|
12
|
+
HOST = "127.0.0.1"
|
13
|
+
PORT = 23005
|
14
|
+
TIMEOUT = 10
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@config = {
|
18
|
+
"method" => "graph_wo_index",
|
19
|
+
"parameter" => {
|
20
|
+
"damping_factor" => 0.9,
|
21
|
+
"landmark_num" => 5
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
TestUtil.write_file("config_graph.json", @config.to_json)
|
26
|
+
@srv = TestUtil.fork_process("graph", PORT, "config_graph.json")
|
27
|
+
@cli = Jubatus::Graph::Client::Graph.new(HOST, PORT)
|
28
|
+
end
|
29
|
+
|
30
|
+
def teardown
|
31
|
+
TestUtil.kill_process(@srv)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_node_info
|
35
|
+
edge_query = [["a", "b"], ["c", "d"], ["e", "f"]]
|
36
|
+
node_query = [["0", "1"], ["2", "3"]]
|
37
|
+
p = Jubatus::Graph::Preset_query.new(edge_query, node_query)
|
38
|
+
in_edges = [0, 0]
|
39
|
+
out_edges = [0, 0]
|
40
|
+
Jubatus::Graph::Node.new(p, in_edges, out_edges)
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def test_create_node
|
45
|
+
name = "name"
|
46
|
+
@cli.clear(name)
|
47
|
+
nid = @cli.create_node("sample_node")
|
48
|
+
assert_equal(nid.to_i.to_s, nid)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_remove_node
|
52
|
+
name = "name"
|
53
|
+
@cli.clear(name)
|
54
|
+
nid = @cli.create_node(name)
|
55
|
+
assert_equal(@cli.remove_node(name, nid), true)
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
def test_update_node
|
61
|
+
name = "name"
|
62
|
+
@cli.clear(name)
|
63
|
+
nid = @cli.create_node(name)
|
64
|
+
prop = {"key1" => "val1", "key2" => "val2"}
|
65
|
+
assert_equal(@cli.update_node(name, nid, prop), true)
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
def test_create_edge
|
70
|
+
name = "name"
|
71
|
+
@cli.clear(name)
|
72
|
+
src = @cli.create_node(name)
|
73
|
+
tgt = @cli.create_node(name)
|
74
|
+
prop = {"key1" => "val1", "key2" => "val2"}
|
75
|
+
ei = Jubatus::Graph::Edge.new(prop, src, tgt)
|
76
|
+
eid = @cli.create_edge("name", tgt, ei)
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
def test_create_edge
|
81
|
+
name = "name"
|
82
|
+
@cli.clear(name)
|
83
|
+
src = @cli.create_node(name)
|
84
|
+
tgt = @cli.create_node(name)
|
85
|
+
prop = {"key1" => "val1", "key2" => "val2"}
|
86
|
+
ei = Jubatus::Graph::Edge.new(prop, src, tgt)
|
87
|
+
eid = @cli.create_edge(src, tgt, ei)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
@@ -0,0 +1,138 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
require 'jubatus/recommender/client'
|
8
|
+
require 'jubatus/recommender/types'
|
9
|
+
require 'jubatus_test/test_util'
|
10
|
+
|
11
|
+
class RecommenderTest < Test::Unit::TestCase
|
12
|
+
HOST = "127.0.0.1"
|
13
|
+
PORT = 23003
|
14
|
+
TIMEOUT = 10
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@config = {
|
18
|
+
"method" => "inverted_index",
|
19
|
+
"converter" => {
|
20
|
+
"string_filter_types" => {},
|
21
|
+
"string_filter_rules" => [],
|
22
|
+
"num_filter_types" => {},
|
23
|
+
"num_filter_rules" => [],
|
24
|
+
"string_types" => {},
|
25
|
+
"string_rules" => [{"key" => "*", "type" => "str", "sample_weight" => "bin", "global_weight" => "bin"}],
|
26
|
+
"num_types" => {},
|
27
|
+
"num_rules" => [{"key" => "*", "type" => "num"}]
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
TestUtil.write_file("config_recommender.json", @config.to_json)
|
32
|
+
@srv = TestUtil.fork_process("recommender", PORT, "config_recommender.json")
|
33
|
+
@cli = Jubatus::Recommender::Client::Recommender.new(HOST, PORT)
|
34
|
+
end
|
35
|
+
|
36
|
+
def teardown
|
37
|
+
TestUtil.kill_process(@srv)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_get_config
|
41
|
+
config = @cli.get_config("name")
|
42
|
+
assert_equal(@config.to_json, JSON.parse(config).to_json)
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def test_complete_row
|
48
|
+
@cli.clear_row("name", "complete_row")
|
49
|
+
string_values = [["key1", "val1"], ["key2", "val2"]]
|
50
|
+
num_values = [["key1", 1.0], ["key2", 2.0]]
|
51
|
+
d = Jubatus::Recommender::Datum.new(string_values, num_values)
|
52
|
+
@cli.update_row("name", "complete_row", d)
|
53
|
+
d1 = @cli.complete_row_from_id("name", "complete_row")
|
54
|
+
d2 = @cli.complete_row_from_datum("name", d)
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
def test_get_similar_row
|
60
|
+
@cli.clear_row("name", "similar_row")
|
61
|
+
string_values = [["key1", "val1"], ["key2", "val2"]]
|
62
|
+
num_values = [["key1", 1.0], ["key2", 2.0]]
|
63
|
+
d = Jubatus::Recommender::Datum.new(string_values, num_values)
|
64
|
+
@cli.update_row("name", "similar_row", d)
|
65
|
+
s1 = @cli.similar_row_from_id("name", "similar_row", 10)
|
66
|
+
s2 = @cli.similar_row_from_datum("name", d, 10)
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
def test_decode_row
|
72
|
+
@cli.clear_row("name", "decode_row")
|
73
|
+
string_values = [["key1", "val1"], ["key2", "val2"]]
|
74
|
+
num_values = [["key1", 1.0], ["key2", 2.0]]
|
75
|
+
d = Jubatus::Recommender::Datum.new(string_values, num_values)
|
76
|
+
@cli.update_row("name", "decode_row", d)
|
77
|
+
decoded_row = @cli.decode_row("name", "decode_row")
|
78
|
+
assert_equal(d.string_values, decoded_row.string_values)
|
79
|
+
assert_equal(d.num_values, decoded_row.num_values)
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
def test_get_row
|
84
|
+
@cli.clear("name")
|
85
|
+
string_values = [["key1", "val1"], ["key2", "val2"]]
|
86
|
+
num_values = [["key1", 1.0], ["key2", 2.0]]
|
87
|
+
d = Jubatus::Recommender::Datum.new(string_values, num_values)
|
88
|
+
@cli.update_row("name", "get_row", d)
|
89
|
+
row_names = @cli.get_all_rows("name")
|
90
|
+
assert_equal(row_names, ["get_row"])
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
def test_clear
|
96
|
+
@cli.clear("name")
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
def test_calcs
|
102
|
+
string_values = [["key1", "val1"], ["key2", "val2"]]
|
103
|
+
num_values = [["key1", 1.0], ["key2", 2.0]]
|
104
|
+
d = Jubatus::Recommender::Datum.new(string_values, num_values)
|
105
|
+
assert_in_delta(@cli.calc_similarity("name", d, d), 1, 0.000001)
|
106
|
+
assert_in_delta(@cli.calc_l2norm("name", d), Math.sqrt(1*1 + 1*1+ 1*1 + 2*2), 0.000001)
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
def test_clear
|
112
|
+
@cli.clear("name")
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
def test_save
|
118
|
+
assert_equal(@cli.save("name", "recommender.save_test.model"), true)
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
def test_load
|
124
|
+
model_name = "recommender.load_test.model"
|
125
|
+
@cli.save("name", model_name)
|
126
|
+
assert_equal(@cli.load("name", model_name), true)
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
|
131
|
+
def test_get_status
|
132
|
+
@cli.get_status("name")
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
end
|
138
|
+
|