class Chao92::Predictor
Public Class Methods
new()
click to toggle source
# File lib/chao92/predictor.rb, line 5 def initialize @samples = [] @observed = {} @ff = {} end
run(samples, next_number)
click to toggle source
# File lib/chao92/predictor.rb, line 11 def self.run(samples, next_number) Predictor.new.predicting(samples, next_number) end
Public Instance Methods
predicting(samples, next_number)
click to toggle source
# File lib/chao92/predictor.rb, line 15 def predicting(samples, next_number) @samples += samples update() predict(next_number) end
Private Instance Methods
predict(next_number)
click to toggle source
# File lib/chao92/predictor.rb, line 27 def predict(next_number) @w = @ff[1] ** 2 / (2.0 * @ff[2]) @turing_estimator = if @ff[1] 1 - @ff[1].to_f / @samples.size else 1 end @S2 = @w * (1 - (1 - (1 - @turing_estimator) / @w ) ** next_number ) end
update()
click to toggle source
# File lib/chao92/predictor.rb, line 22 def update @observed = @samples.to_hash @ff = @observed.to_inverse end