class Markov::Chain(LinkType)

Overview

A Chain is a vehicle for generating probable sequences of type LinkType

Defined in:

markov/Chain.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(pull : JSON::PullParser) #

Makes it possible to use #to_json and #from_json (see Crystal docs)


[View source]
def self.new(transition_table : Markov::TransitionTable(LinkType), seed : LinkType? = nil) #

For larger processes, you'll want to externally train a TransitionTable then pass it in as an argument. If #seed is not provided, it will default to a random item chosen with TransitionTable#random_key


[View source]
def self.new(sample : Array(LinkType), seed : LinkType = (sample.sample(1)).first) #

If you have a small (Array-sized) data set, you can pass it as sample and a TransitionTable will be constructed for you with the sample data.

#seed should be the element in sample which you would like to begin the sequence. If no #seed is provided, a random element will be selected from sample.


[View source]

Instance Method Detail

def generate(count : Int32) #

Generates a probable, sequential Array of LinkType elements of count length


[View source]
def generated #

Returns an ordered Array(LinkType) of all LinkType elements generated


[View source]
def generated=(_generated : Array(LinkType)) #

def next : LinkType #

Generates the next probable LinkType element


[View source]
def on_dead_end(&block : Proc(Markov::TransitionTable(LinkType), Markov::Chain(LinkType), Exception, LinkType)) : Proc(Markov::TransitionTable(LinkType), Markov::Chain(LinkType), Exception, LinkType) #

Sets an exception handler for EmptyTransitionMatrixException when Chain instance reaches a dead end while using Chain#generate or Chain#next. Returned value is inserted as the next probable element.

Usage:

c = Markov::Chain(String).new sample: ["Koala", "Kangaroo"] of String, seed: "Kangaroo"
c.on_dead_end do |transition_table, chain, exception|
  "Koala"
end
c.next() #=> "Koala"
c.next() #=> "Kangaroo"
c.next() #=> "Koala"

[View source]
def seed #

Returns #seed element.


[View source]
def seed=(_seed : LinkType) #

def to_json(json : JSON::Builder) #

def transition_table #

Returns the trained instance of TransitionTable


[View source]
def transition_table=(_transition_table : Markov::TransitionTable(LinkType)) #