Module: FinModeling::HasStringClassifier::ClassMethods
- Defined in:
- lib/finmodeling/has_string_classifer.rb
Instance Method Summary collapse
- #_load_vectors_and_train(base_filename, vectors) ⇒ Object
- #classifiers ⇒ Object
- #has_string_classifier(klasses, item_klass) ⇒ Object
- #klasses ⇒ Object
Instance Method Details
#_load_vectors_and_train(base_filename, vectors) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/finmodeling/has_string_classifer.rb', line 15 def _load_vectors_and_train(base_filename, vectors) FileUtils.mkdir_p(File.dirname(base_filename)) if !File.exists?(File.dirname(base_filename)) success = FinModeling::Config.caching_enabled? @klasses.each do |cur_klass| filename = base_filename + cur_klass.to_s + ".db" success = success && File.exists?(filename) if success @classifiers[cur_klass] = NaiveBayes.load(filename) else @classifiers[cur_klass].db_filepath = filename end end return if success vectors.each do |vector| begin item = @item_klass.new(vector[:item_string]) item.train(vector[:klass]) rescue Exception => e puts "\"#{vector[:item_string]}\" has a bogus klass: \"#{vector[:klass]}\"" puts "\t" + e. puts "\t" + e.backtrace.inspect.gsub(/, /, "\n\t ") end end @klasses.each do |cur_klass| @classifiers[cur_klass].save end end |
#classifiers ⇒ Object
49 50 51 |
# File 'lib/finmodeling/has_string_classifer.rb', line 49 def classifiers @classifiers end |
#has_string_classifier(klasses, item_klass) ⇒ Object
9 10 11 12 13 |
# File 'lib/finmodeling/has_string_classifer.rb', line 9 def has_string_classifier(klasses, item_klass) @klasses = klasses @item_klass = item_klass @classifiers = Hash[ *klasses.zip(klasses.map{ |x| NaiveBayes.new(:yes, :no) }).flatten ] end |
#klasses ⇒ Object
45 46 47 |
# File 'lib/finmodeling/has_string_classifer.rb', line 45 def klasses @klasses end |