cabalist 0.0.1 → 0.0.2
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 +4 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE +0 -0
- data/README.md +121 -0
- data/Rakefile +17 -0
- data/cabalist.gemspec +42 -0
- data/lib/cabalist.rb +13 -2
- data/lib/cabalist/configuration.rb +20 -0
- data/lib/cabalist/frontend.rb +111 -0
- data/lib/cabalist/model_additions.rb +127 -0
- data/lib/cabalist/railtie.rb +14 -0
- data/lib/cabalist/version.rb +3 -0
- data/lib/cabalist/views/classifier.haml +82 -0
- data/lib/cabalist/views/index.haml +21 -0
- data/lib/cabalist/views/layout.haml +39 -0
- data/lib/generators/cabalist/classifier/USAGE +0 -0
- data/lib/generators/cabalist/classifier/classifier_generator.rb +37 -0
- data/lib/generators/cabalist/classifier/templates/migrations/add_cabalist.rb.erb +11 -0
- data/lib/generators/cabalist/install/USAGE +0 -0
- data/lib/generators/cabalist/install/install_generator.rb +26 -0
- data/lib/generators/cabalist/install/templates/initializers/cabalist.rb +4 -0
- data/lib/generators/cabalist/install/templates/public/images/eye_12x9.png +0 -0
- data/lib/generators/cabalist/install/templates/public/images/logo.png +0 -0
- data/lib/generators/cabalist/install/templates/public/images/ncirl.png +0 -0
- data/lib/generators/cabalist/install/templates/public/images/pen_12x12.png +0 -0
- data/lib/generators/cabalist/install/templates/public/images/symbol.png +0 -0
- data/lib/generators/cabalist/install/templates/public/images/target_12x12.png +0 -0
- data/lib/generators/cabalist/install/templates/public/images/x_14x14.png +0 -0
- data/lib/generators/cabalist/install/templates/public/javascripts/cabalist.js +23 -0
- data/lib/generators/cabalist/install/templates/public/stylesheets/cabalist.css +197 -0
- data/spec/cabalist/frontend_spec.rb +79 -0
- data/spec/cabalist/model_additions_spec.rb +104 -0
- data/spec/cabalist/performance_benchmark_spec.rb +76 -0
- data/spec/spec_helper.rb +30 -0
- metadata +164 -12
- data/lib/cabalist/manager.rb +0 -30
- data/lib/cabalist/object_hooks.rb +0 -59
data/lib/cabalist/manager.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
|
3
|
-
module Cabalist
|
4
|
-
|
5
|
-
class Manager
|
6
|
-
|
7
|
-
include Singleton
|
8
|
-
attr_accessor :classifiers
|
9
|
-
|
10
|
-
def initialize() self.classifiers = [] end
|
11
|
-
|
12
|
-
|
13
|
-
def self.register_classifier(klass, proc)
|
14
|
-
instance.classifiers << { :klass => klass, :proc => proc }
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.setup!
|
18
|
-
instance.classifiers.each do |classifier|
|
19
|
-
classifier[:klass].const_set( 'CABALIST_CLASSIFIER',
|
20
|
-
classifier[:proc].call )
|
21
|
-
classifier[:klass].class_eval do
|
22
|
-
def classify() CABALIST_CLASSIFIER.eval(self.get_signals) end
|
23
|
-
def classify!() set_category(classify) end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'ai4r'
|
2
|
-
|
3
|
-
Object::instance_eval do
|
4
|
-
|
5
|
-
def acts_as_cabalist(options = {})
|
6
|
-
|
7
|
-
# == Set defaults ======================================================= #
|
8
|
-
collection = options[:collection] || :all
|
9
|
-
algorithm = options[:algorithm] || :id3
|
10
|
-
# == END ================================================================ #
|
11
|
-
|
12
|
-
# == Determine a classifier ============================================= #
|
13
|
-
classifier = case algorithm
|
14
|
-
when :hyperpipes then Ai4r::Classifiers::Hyperpipes
|
15
|
-
when :ib1 then Ai4r::Classifiers::IB1
|
16
|
-
when :id3 then Ai4r::Classifiers::ID3
|
17
|
-
when :one_r then Ai4r::Classifiers::OneR
|
18
|
-
when :prism then Ai4r::Classifiers::Prism
|
19
|
-
when :zero_r then Ai4r::Classifiers::ZeroR
|
20
|
-
else raise 'Unknown algorithm provided'
|
21
|
-
end
|
22
|
-
# == END ================================================================ #
|
23
|
-
|
24
|
-
# == Set classification methods ========================================= #
|
25
|
-
get_signals_proc = Proc::new do
|
26
|
-
options[:fields].map do |field|
|
27
|
-
field.is_a?(Proc) ? field.call(self) : self.send(field)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
get_category_proc = Proc::new do
|
32
|
-
self.send(options[:category])
|
33
|
-
end
|
34
|
-
|
35
|
-
set_category_proc = Proc::new do |val|
|
36
|
-
self.send("#{options[:category]}=".to_sym, val)
|
37
|
-
self
|
38
|
-
end
|
39
|
-
|
40
|
-
send(:define_method, 'get_signals'.to_sym, &get_signals_proc)
|
41
|
-
send(:define_method, 'get_category'.to_sym, &get_category_proc)
|
42
|
-
send(:define_method, 'set_category'.to_sym, &set_category_proc)
|
43
|
-
|
44
|
-
proc = Proc::new do
|
45
|
-
data_items = send(collection).map do |el|
|
46
|
-
el.get_signals.push(el.get_category)
|
47
|
-
end
|
48
|
-
data_set = Ai4r::Data::DataSet::new({ :data_items => data_items })
|
49
|
-
classifier::new.build(data_set)
|
50
|
-
end
|
51
|
-
# == END ================================================================ #
|
52
|
-
|
53
|
-
# == Register classifier ================================================ #
|
54
|
-
Cabalist::Manager.register_classifier(self, proc)
|
55
|
-
# == END ================================================================ #
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|