class MarkovChain

Public Class Methods

from(data) click to toggle source

data is data() of the other MarkovChain. It becomes owned by the returned MarkovChain.

# File lib/lib/markov_chain.rb, line 8
def self.from(data)
  new(data)
end
new(data = {}) click to toggle source

creates an empty MarkovChain.

data is a map which becomes owned by this MarkovChain.

# File lib/lib/markov_chain.rb, line 17
def initialize(data = {})
  @data = data
  @last_state = nil
end

Public Instance Methods

append!(states) click to toggle source

appends states to the end of this MarkovChain.

states is an Array of arbitrary objects.

It returns this (modified) MarkovChain.

# File lib/lib/markov_chain.rb, line 29
def append!(states)
  for next_state in states
    state_occurences_map = (@data[@last_state] or Hash.new)
    state_occurences_map[next_state] ||= 0
    state_occurences_map[next_state] += 1
    @data[@last_state] = state_occurences_map
    @last_state = next_state
  end
  return self
end
data() click to toggle source

data passed to ::new or ::from.

# File lib/lib/markov_chain.rb, line 58
def data
  @data
end
predict() click to toggle source

returns Enumerable of predicted states. The states are predicted by states passed to append!().

The result may contain nils. Each nil means that MarkovChain could not predict a state after the one before nil. Example:

markov_chain.predict().take(4)  #=>  ["a", "c", "b", nil]

That means markov_chain could not predict a state after “b”.

# File lib/lib/markov_chain.rb, line 51
def predict()
  self.extend(Prediction)
end