Skip to content

Instantly share code, notes, and snippets.

View ahwillia's full-sized avatar

Alex Williams ahwillia

View GitHub Profile
@ahwillia
ahwillia / pairs.jl
Last active August 29, 2015 14:06
Scatterplot matrix in julia
# Thanks to Joe Kington
# http://stackoverflow.com/questions/7941207/is-there-a-function-to-make-scatterplot-matrices-in-matplotlib
using PyPlot
function pairs(data)
(nobs, nvars) = size(data)
(fig, ax) = subplots(nvars, nvars, figsize=(8,8))
subplots_adjust(hspace=0.05, wspace=0.05)
@ahwillia
ahwillia / dtwplot.jl
Last active August 28, 2016 17:56
Problem I'm having with userplot
@userplot DTWPlot
@recipe function f(h::DTWPlot)
seq1, seq2 = h.args
i1,i2 = collect(1:length(seq1)),collect(1:length(seq2))
# set up the subplots
seriestype := :line
legend --> false
link := :both
@ahwillia
ahwillia / altgradpca.jl
Created September 11, 2016 06:19
Prototype for alternating gradient descent with Optim.jl
using Optim
# low-dimensional data embedded in high-dimension
data = randn(100,5)*randn(5,100);
# a container for the parameters we fit
immutable PCA{T<:Real}
X::Matrix{T}
Y::Matrix{T}
end
@ahwillia
ahwillia / randomized_pca.py
Last active May 10, 2017 17:51
Randomized Matrix Factorization in TensorFlow
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
@ahwillia
ahwillia / cv_pca.py
Created June 20, 2017 21:21
Tensorflow PCA with cross-validation
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)
@ahwillia
ahwillia / tsp.py
Created January 23, 2018 04:12
tsp_2opt.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 / bcd_cnmf.py
Created April 10, 2018 23:54
Convolutive NMF by block coordinate descent
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 / equations.tex
Last active June 2, 2018 21:38
Export a sequence of LaTeX equations to individual image files
% quad %
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
% optimization %
\usepackage{amsmath}
\begin{equation*}
\begin{aligned}
& \underset{x}{\text{minimize}}
& & f_0(x) \\
& \text{subject to}
@ahwillia
ahwillia / poiss_reg.py
Last active September 26, 2018 22:35
Poisson Regression via scipy.optimize
"""
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
@ahwillia
ahwillia / poiss_tf.py
Created September 26, 2018 23:04
Computing hessian-vector products in tensorflow
"""
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