This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
A simple implementation of Poisson regression. | |
""" | |
import numpy as np | |
from scipy.optimize import minimize | |
n = 1000 # number of datapoints | |
p = 5 # number of features |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
from tqdm import trange | |
import matplotlib.pyplot as plt | |
# TODO: subclass np.ndarray? | |
class ShiftMatrix(object): | |
""" | |
Thin wrapper around a numpy matrix to support shifting along the second | |
axis and padding with zeros. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
from numpy.random import randn, rand | |
from scipy.optimize import minimize | |
import matplotlib.pyplot as plt | |
from nnls import nnlsm_blockpivot as nnlstsq | |
import itertools | |
from scipy.spatial.distance import cdist | |
def censored_lstsq(A, B, M): | |
"""Solves least squares problem with missing data in B |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def reverse_segment(path, n1, n2): | |
"""Reverse the nodes between n1 and n2. | |
""" | |
q = path.copy() | |
if n2 > n1: | |
q[n1:(n2+1)] = path[n1:(n2+1)][::-1] | |
return q | |
else: | |
seg = np.hstack((path[n1:], path[:(n2+1)]))[::-1] | |
brk = len(q) - n1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
import scipy.linalg | |
def elastic_net(A, B, x=None, l1=1, l2=1, lam=1, tol=1e-6, maxiter=10000): | |
"""Performs elastic net regression by ADMM | |
minimize ||A*x - B|| + l1*|x| + l2*||x|| | |
Args: | |
A (ndarray) : m x n matrix |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from pca_crossval import * | |
from tqdm import tqdm | |
import itertools | |
np.random.seed(1111) | |
m, n, r = 100, 101, 3 | |
Utrue, Vtrue = rand(m,r), rand(r,n) | |
data = np.dot(Utrue, Vtrue) + .25*randn(m,n) | |
data[data < 0] = 0 | |
ranks = [] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
import tensorflow as tf | |
from tqdm import tqdm | |
# N, size of matrix. R, rank of data | |
N = 100 | |
R = 5 | |
# generate data | |
W_true = np.random.randn(N,R).astype(np.float32) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tensorflow as tf # works on version 1.0.0 | |
import numpy as np | |
from tqdm import trange | |
# create fake data (low-rank matrix X) | |
A = np.random.randn(100, 3).astype(np.float32) | |
B = np.random.randn(3, 100).astype(np.float32) | |
X = np.dot(A, B) | |
# create tensorflow variables to predict low-rank decomposition |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
import tensorflow as tf | |
# N, size of matrix. R, rank of data | |
N = 100 | |
R = 5 | |
# generate data | |
W_true = np.random.randn(N,R) | |
C_true = np.random.randn(R,N) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
import tensorflow as tf | |
# N, size of matrix. R, rank of data | |
N = 100 | |
R = 5 | |
# generate data | |
W_true = np.random.randn(N,R) | |
C_true = np.random.randn(R,N) |