From c2e2836df5dbd27fddb34b0f4a53968213f50bfa Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Wed, 24 May 2023 15:16:50 -0700 Subject: [PATCH] tweak: small refactor; add a type for prediction --- src/jit_bayes | Bin 277208 -> 277160 bytes src/jit_bayes.nim | 86 ++++++++++++++++++++++++++++------------------ 2 files changed, 53 insertions(+), 33 deletions(-) diff --git a/src/jit_bayes b/src/jit_bayes index bc65513e8940e8dc766b897715e18384678fb2cc..227fea40cdda9ea2c1e6798224841437d382b747 100755 GIT binary patch delta 22726 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%0D++}T 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 delta 22235 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 bb0*AqOhr~&N3c0Xb~1+HN5jdTj7|R!jVbA+ diff --git a/src/jit_bayes.nim b/src/jit_bayes.nim index 6d30296..8321f2b 100644 --- a/src/jit_bayes.nim +++ b/src/jit_bayes.nim @@ -4,9 +4,38 @@ import sequtils import std/sugar import std/algorithm +## Define type +type prediction = (string, float) +# string represents a hypothesis, +# prediction represents the predictionability mass + +## Utils +## Find index (or -1) +proc findIndex(xs: seq[string], y: string): int = + for i, x in xs: + if x == y: + return i + return -1 + +## Do simple predictions +proc comparePredictions (x: prediction, y: prediction): int = + let (_, p1) = x + let (_, p2) = y + if p1 < p2: return 1 + elif p1 > p2: return -1 + else: return 0 + +proc getProbability (t: prediction): float = + let (_, p) = t + return p + +proc getHypothesis (t: prediction): string = + let (h, _) = t + return h + ## Get sequences -## let file_path = "../data/stripped" let file_path = "../data/one_to_three" +## let file_path = "../data/stripped" proc getOEIS(): seq[seq[string]] = let f = open(file_path) var i = 0 @@ -47,25 +76,9 @@ proc getSequencesWithStart(seqs: seq[seq[string]], start: seq[string]): seq[seq[ # var continuations = getSequencesWithStart(seqs, start) # print continuations -## Find index (or -1) - -proc findIndex(xs: seq[string], y: string): int = - for i, x in xs: - if x == y: - return i - return -1 - -## Do simple predictions -proc compareTuple (x: (string, float), y: (string, float)): int = - let (_, p1) = x - let (_, p2) = y - if p1 < p2: return 1 - elif p1 > p2: return -1 - else: return 0 - -proc predictContinuation(seqs: seq[seq[string]], start: seq[string]): seq[(string, float)] = - let continuations = getSequencesWithStart(seqs, start) - let l = start.len +proc predictContinuation(seqs: seq[seq[string]], observations: seq[string]): seq[prediction] = + let continuations = getSequencesWithStart(seqs, observations) + let l = observations.len var nexts: seq[string] var ps: seq[float] for c in continuations: @@ -79,26 +92,19 @@ proc predictContinuation(seqs: seq[seq[string]], start: seq[string]): seq[(strin let sum = foldl(ps, a + b, 0.0) ps = ps.map( p => p/sum) var next_and_ps = zip(nexts, ps) - # next_and_ps = sort(next_and_ps, compareTuple) - sort(next_and_ps, compareTuple) + sort(next_and_ps, comparePredictions) # ^ sorts in place # also, openArray refers to both arrays and sequences. return next_and_ps -var start = @["1", "2", "3", "4", "5", "6"] -echo "Initial sequence", start -print "Full prediction with access to all hypotheses:" -let continuation_probabilities = predictContinuation(seqs, start) -print continuation_probabilities - ## Predict continuation but without access to all oeis sequences -proc predictContinuationWithTruncatedHypotheses(seqs: seq[seq[string]], start: seq[string], num_hypotheses: int): seq[(string, float)] = +proc predictContinuationWithTruncatedHypotheses(seqs: seq[seq[string]], start: seq[string], num_hypotheses: int): seq[prediction] = let n = if num_hypotheses < seqs.len: num_hypotheses else: seqs.len let truncated_seqs = seqs[0..