Skip to content

Instantly share code, notes, and snippets.

View jdmoore7's full-sized avatar
🏠
Working from home

Jacob Moore jdmoore7

🏠
Working from home
  • Chicago, IL
View GitHub Profile
def traverse(g, node, bfs=True):
s = Staq()
s.insert(node)
scheduled = set([node])
while s.size > 0:
node = s.pop(head=bfs, val=True)
print(node)
neighbors = g[node]
@jdmoore7
jdmoore7 / Staq.py
Created September 13, 2022 21:33
A Doubly Linked List implementation of a dual purposed Stack and Queue
class StaqNode:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Staq:
def __init__(self):
self.head = None
self.tail = None
@jdmoore7
jdmoore7 / bayes_rank.py
Created June 12, 2022 19:36
Bayesian Sports Ranking with PyMC3
import pymc3 as pm
from theano import tensor as tt
import arviz as az
import numpy as np
scores = np.array([1,1,1,0,0,0
]).flatten()
games = [(0,1), (0,2), (0,3),
(1,2), (1,3),
@jdmoore7
jdmoore7 / ier_2py.py
Last active June 12, 2022 18:53
Bayesian 2PL implementation with PyMC3
import pymc3 as pm
from theano import tensor as tt
import arviz as az
import numpy as np
# Binary, correct answer array
scores = np.array([1,1,1,0,0,0
]).flatten()
# (student:question) tuples
@jdmoore7
jdmoore7 / irt_1pl.py
Last active June 12, 2022 18:50
Bayesian 1PL implementation in PyMC3
import pymc3 as pm
from theano import tensor as tt
import arviz as az
import numpy as np
# Binary, correct answer array
scores = np.array([1,1,1,0,0,0
]).flatten()
# (student:question) tuples
@jdmoore7
jdmoore7 / rasch_irt.py
Last active November 26, 2023 17:42
Bayesian Rasch IRT implementation with PyMC3
import pymc3 as pm
from theano import tensor as tt
import arviz as az
import numpy as np
# Binary, correct answer array
scores = np.array([1,1,1,0,0,0
]).flatten()
# (student:question) tuples
@jdmoore7
jdmoore7 / rev_prof_post.py
Last active December 8, 2021 17:55
Revenue & Profit Posterior
def rev_posterior(samples=100, size=len(X)):
for s in range(samples):
idx = random.choice(range(size))
m = trace.get_values('m')[idx]
b = trace.get_values('b')[idx]
rev = X * np.exp(m*X +b)
plt.plot(X, rev)
return
# rev_posterior()
@jdmoore7
jdmoore7 / post_params.py
Created December 8, 2021 17:35
Posterior plots
import random
def post_plot(trace_obj=trace,samples=100,size=len(X)):
for itr in range(samples):
idx = random.choice(range(size))
m = trace_obj.get_values('m')[idx]
b = trace_obj.get_values('b')[idx]
Y_hat = np.exp(m*X + b)
plt.plot(X,Y_hat)
plt.scatter(X,Y)
@jdmoore7
jdmoore7 / bayesian_linear_model.py
Created December 8, 2021 17:33
Bayesian linear model
import pymc3 as pm
with pm.Model() as model:
m = pm.Normal('m',mu=0, sd=2)
b = pm.Normal('b',mu=0, sd=2)
s = pm.Exponential('s',lam=1)
y_hat = pm.math.dot(m, X) + b
lik = pm.Normal('lik', mu=y_hat, observed=pm.math.log(Y), sigma=s)
trace = pm.sample(chains=4)
@jdmoore7
jdmoore7 / demand.py
Created December 8, 2021 17:32
Demand curve simulation
import numpy as np
sd = 0.5
m,b = -0.25, 5
X = np.linspace(0,20,100)
Y = np.exp(np.random.normal(loc=m*X+b, scale=sd))
import matplotlib.pyplot as plt
plt.scatter(X,Y)
Y_hat = np.exp(m*X+b)
plt.plot(X,Y_hat, color='r')