Skip to content

Instantly share code, notes, and snippets.

Alex Williams ahwillia

Block or report user

Report or block ahwillia

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@ahwillia
ahwillia / bandpass.py
Created Feb 20, 2019
Bandpass filter in python... (I have no idea why scipy does not provide this)
View bandpass.py
def bandpass(x, lowcut, highcut, fs, order=5, axis=-1, kind='butter'):
"""
Parameters
----------
x : ndarray
1d time series data
lowcut : float
Defines lower frequency cutoff (e.g. in Hz)
highcut : float
Defines upper frequency cutoff (e.g. in Hz)
@ahwillia
ahwillia / poiss_tf.py
Created Sep 26, 2018
Computing hessian-vector products in tensorflow
View poiss_tf.py
"""
Computing hessian-vector products in tensorflow.
For simplicity, we demonstrate the idea on a Poisson regression model.
"""
import tensorflow as tf
import numpy as np
from scipy.optimize import minimize
@ahwillia
ahwillia / poiss_reg.py
Last active Sep 26, 2018
Poisson Regression via scipy.optimize
View poiss_reg.py
"""
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
View copy_task.py
# coding: utf-8
# In[1]:
import numpy as np
import matplotlib.pyplot as plt
import scipy.linalg as sci
# In[2]:
@ahwillia
ahwillia / bcd_cnmf.py
Created Apr 10, 2018
Convolutive NMF by block coordinate descent
View bcd_cnmf.py
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.
@ahwillia
ahwillia / cv.py
Last active Aug 9, 2019
Cross-validation for matrix factorization models
View cv.py
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
@ahwillia
ahwillia / tsp.py
Created Jan 23, 2018
tsp_2opt.py
View tsp.py
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
@ahwillia
ahwillia / elastic_net.py
Created Nov 8, 2017
Elastic Net Regression via ADMM in Python
View elastic_net.py
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
@ahwillia
ahwillia / make_nmf_fig.py
Last active Sep 16, 2017
PCA and NMF with cross-validation (using Numpy)
View make_nmf_fig.py
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 = []
@ahwillia
ahwillia / cv_pca.py
Created Jun 20, 2017
Tensorflow PCA with cross-validation
View cv_pca.py
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)
You can’t perform that action at this time.