コード例 #1
0
fused = l1norm(D, l=20)

penalty = seminorm(sparsity,fused)


Y = np.random.standard_normal(500); Y[100:150] += 7; Y[250:300] += 14
loss = l2normsq.shift(-Y, l=0.5)
problem = loss.add_seminorm(penalty)
solver = FISTA(problem)
solver.fit(max_its=100, tol=1e-10)
solution = solver.problem.coefs

import pylab
pylab.scatter(np.arange(Y.shape[0]), Y, c='r')
pylab.plot(solution, color='yellow', linewidth=5)

l1_fused = np.fabs(D * solution).sum()
l1_sparsity = np.fabs(solution).sum()

new_fused = l1norm(D, l=l1_fused)
new_sparsity = l1norm(500, l=l1_sparsity)
conjugate = l2normsq.shift(Y, l=0.5)
from regreg.constraint import constraint
loss_constraint = constraint(conjugate, new_fused, new_sparsity)
constrained_solver = FISTA(loss_constraint.dual_problem())
constrained_solver.debug = True
constrained_solver.fit(max_its=2000, tol=1e-10)
constrained_solution = loss_constraint.primal_from_dual(constrained_solver.problem.coefs)
pylab.plot(constrained_solution, color='black', linewidth=3)

コード例 #2
0
ファイル: tfocs.py プロジェクト: Xiaoying-Tian/regreg
loss = quadratic.shift(-Y, l=0.5)
penalty = l1norm(D, l=20)

problem = loss.add_seminorm(seminorm(penalty))
solver = FISTA(problem)
solver.fit(max_its=100, tol=1e-10)
solution = solver.problem.coefs

l1_soln = np.fabs(D * solution).sum()

tfocs_penalty = maxnorm(499, l=l1_soln)
tfocs_loss = quadratic.affine(DT, -Y, l=0.5)
tfocs_loss.coefs = np.zeros(499)
tfocs_problem = tfocs_loss.add_seminorm(tfocs_penalty)
tfocs_solver = FISTA(tfocs_problem)
tfocs_solver.debug = True
tfocs_solver.fit(max_its=1000, tol=1e-10)
tfocs_dual_solution = tfocs_problem.coefs
tfocs_primal_solution = Y - DT * tfocs_dual_solution

import pylab
pylab.scatter(np.arange(Y.shape[0]), Y, c='r')
pylab.plot(solution, color='yellow', linewidth=5)
pylab.plot(tfocs_primal_solution, color='black', linewidth=3)


newl1 = l1norm(D, l=l1_soln)
conjugate = quadratic.shift(Y, l=0.5)
from regreg.constraint import constraint
loss_constraint = constraint(conjugate, newl1)
new_solver = FISTA(loss_constraint.dual_problem())
コード例 #3
0
ファイル: tfocs.py プロジェクト: sowuy/regreg
loss = l2normsq.shift(-Y, l=0.5)
penalty = l1norm(D, l=20)

problem = loss.add_seminorm(seminorm(penalty))
solver = FISTA(problem)
solver.fit(max_its=100, tol=1e-10)
solution = solver.problem.coefs

l1_soln = np.fabs(D * solution).sum()

tfocs_penalty = maxnorm(499, l=l1_soln)
tfocs_loss = l2normsq.affine(DT, -Y, l=0.5)
tfocs_loss.coefs = np.zeros(499)
tfocs_problem = tfocs_loss.add_seminorm(tfocs_penalty)
tfocs_solver = FISTA(tfocs_problem)
tfocs_solver.debug = True
tfocs_solver.fit(max_its=1000, tol=1e-10)
tfocs_dual_solution = tfocs_problem.coefs
tfocs_primal_solution = Y - DT * tfocs_dual_solution

import pylab
pylab.scatter(np.arange(Y.shape[0]), Y, c='r')
pylab.plot(solution, color='yellow', linewidth=5)
pylab.plot(tfocs_primal_solution, color='black', linewidth=3)

newl1 = l1norm(D, l=l1_soln)
conjugate = l2normsq.shift(Y, l=0.5)
from regreg.constraint import constraint
loss_constraint = constraint(conjugate, newl1)
new_solver = FISTA(loss_constraint.dual_problem())
new_solver.debug = True
コード例 #4
0
ファイル: isotonic.py プロジェクト: sowuy/regreg
import numpy as np
import pylab
from scipy import sparse

from regreg.algorithms import FISTA
from regreg.atoms import nonnegative
from regreg.container import container
from regreg.smooth import signal_approximator, smooth_function

n = 100
Y = np.random.standard_normal(n)
Y[:-30] += np.arange(n - 30) * 0.2

D = (np.identity(n) - np.diag(np.ones(n - 1), -1))[1:]

isotonic = nonnegative.linear(sparse.csr_matrix(D))
loss = signal_approximator(Y)
p = container(loss, isotonic)
solver = FISTA(p.problem(initial=np.zeros(n)))
solver.debug = True

vals = solver.fit(max_its=25000, tol=1e-08, backtrack=True)
soln = solver.problem.coefs

X = np.arange(n)
pylab.clf()
pylab.scatter(X, Y)
pylab.step(X, soln, 'r--')
コード例 #5
0
ファイル: isotonic.py プロジェクト: fperez/regreg
import numpy as np
import pylab
from scipy import sparse

from regreg.algorithms import FISTA
from regreg.atoms import nonnegative
from regreg.container import container
from regreg.smooth import signal_approximator, smooth_function

n = 100
Y = np.random.standard_normal(n)
Y[:-30] += np.arange(n-30) * 0.2

D = (np.identity(n) - np.diag(np.ones(n-1),-1))[1:]


isotonic = nonnegative.linear(sparse.csr_matrix(D))
loss = signal_approximator(Y)
p = container(loss, isotonic)
solver=FISTA(p.problem(initial=np.zeros(n)))
solver.debug=True

vals = solver.fit(max_its=25000, tol=1e-08, backtrack=True)
soln = solver.problem.coefs

X = np.arange(n)
pylab.clf()
pylab.scatter(X, Y)
pylab.step(X, soln, 'r--')