#import sys
#!{sys.executable} -m pip install --upgrade c-lasso
from classo import *
import zarr
import numpy as np
import matplotlib.pyplot as plt
from copy import deepcopy
m,d,d_nonzero,k,sigma =150,100,5,1,0.5
(X,C,y),sol = random_data(m,d,d_nonzero,k,sigma,zerosum=False,seed=None)
plt.bar(range(len(sol)),sol)
plt.show()
np.arange(len(sol))[sol !=0.]
print("lambdamax = ", max(abs(X.T.dot(y))))
problem = classo_problem(X,y,C=C)
problem.model_selection.PATH = True
problem.model_selection.CV = True
problem.model_selection.StabSel = True
problem.model_selection.LAMfixed = True
problem.formulation.w = np.array([2.]*40+ [1.]*(d-40))
problem1 = deepcopy(problem)
problem2 = deepcopy(problem)
problem3 = deepcopy(problem)
param = problem1.model_selection.PATHparameters
param.numerical_method = ' '
param.n_active = 20
param.lambdas = np.linspace(1.,1e-3,50)
param = problem2.model_selection.PATHparameters
param.numerical_method = 'P-PDS'
param.n_active = 0
param.lambdas = np.linspace(1.,1e-1,50)
param = problem3.model_selection.PATHparameters
param.numerical_method = 'DR'
param.n_active = 0
param.lambdas = np.linspace(1.,1e-1,20)
param = problem1.model_selection.CVparameters
param.seed = None
param.numerical_method = ' '
param.Nsubset = 5
param.oneSE = True
param.lambdas = np.linspace(1.,1e-3,80)
param = problem2.model_selection.CVparameters
param.seed = None
param.numerical_method = ' '
param.Nsubset = 7
param.oneSE = False
param.lambdas = np.linspace(1.,1e-3,80)
param = problem3.model_selection.CVparameters
param.seed = 2
param.numerical_method = 'P-PDS'
param.Nsubset = 3
param.oneSE = True
param.lambdas = np.linspace(1.,1e-1,20)
param = problem1.model_selection.StabSelparameters
param.seed = None
param.numerical_method = ' '
param.method = 'first'
param.B = 50
param.q = 10
param.percent_nS = 0.5
param.lamin = 0.01
param.hd = False
param.lam = 'theoretical'
param.true_lam = True
param.threshold = 0.7
param.threshold_label = 0.2
param = problem2.model_selection.StabSelparameters
param.seed = None
param.numerical_method = ' '
param.method = 'max'
param.B = 70
param.q = 20
param.percent_nS = 0.8
param.lamin = 0.01
param.hd = False
param.lam = 'theoretical'
param.true_lam = True
param.threshold = 0.5
param.threshold_label = 0.2
param = problem3.model_selection.StabSelparameters
param.seed = None
param.numerical_method = ' '
param.method = 'lam'
param.B = 50
param.q = 1000
param.percent_nS = 0.4
param.lamin = 1.
param.hd = False
param.lam = 'theoretical'
param.true_lam = True
param.threshold = 0.8
param.threshold_label = 0.2
param = problem1.model_selection.LAMfixedparameters
param.numerical_method = 'P-PDS'
param.lam = 'theoretical'
param.true_lam = True
param = problem2.model_selection.LAMfixedparameters
param.numerical_method = 'DR'
param.lam = 0.1
param.true_lam = False
param = problem3.model_selection.LAMfixedparameters
param.numerical_method = ' '
param.lam = 0.
param.true_lam = True
problem1.formulation.concomitant = False
problem1.formulation.huber = False
problem1.formulation.classification = False
problem2.formulation.concomitant = False
problem2.formulation.huber = False
problem2.formulation.classification = False
problem3.formulation.concomitant = False
problem3.formulation.huber = False
problem3.formulation.classification = False
problem1.solve()
print(problem1)
problem1.solution.CV.graphic(ratio_mse_max = 10.)
print(problem1.solution)
problem2.solve()
print(problem2)
problem2.solution.CV.graphic(ratio_mse_max = 10.)
print(problem2.solution)
problem3.solve()
print(problem3)
problem3.solution.CV.graphic(ratio_mse_max = 10.)
print(problem3.solution)
problem1.model_selection.PATHparameters.numerical_method = ' '
problem2.model_selection.PATHparameters.numerical_method = 'P-PDS'
problem3.model_selection.PATHparameters.numerical_method = 'DR'
problem1.model_selection.CVparameters.numerical_method = ' '
problem2.model_selection.CVparameters.numerical_method = ' '
problem3.model_selection.CVparameters.numerical_method = 'P-PDS'
problem1.model_selection.StabSelparameters.numerical_method = ' '
problem2.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.lam = 'theoretical'
problem1.model_selection.LAMfixedparameters.numerical_method = 'P-PDS'
problem2.model_selection.LAMfixedparameters.numerical_method = 'DR'
problem3.model_selection.LAMfixedparameters.numerical_method = 'Path-Alg'
problem1.model_selection.LAMfixedparameters.lam = 'theoretical'
problem1.formulation.concomitant = False
problem1.formulation.huber = True
problem1.formulation.classification = False
problem2.formulation.concomitant = False
problem2.formulation.huber = True
problem2.formulation.classification = False
problem3.formulation.concomitant = False
problem3.formulation.huber = True
problem3.formulation.classification = False
problem1.solve()
print(problem1)
problem1.solution.CV.graphic(ratio_mse_max = 10.)
print(problem1.solution)
problem2.solve()
print(problem2)
problem2.solution.CV.graphic(ratio_mse_max = 10.)
print(problem2.solution)
problem3.solve()
print(problem3)
problem3.solution.CV.graphic(ratio_mse_max = 10.)
print(problem3.solution)
problem1.model_selection.PATHparameters.numerical_method = ' '
problem2.model_selection.PATHparameters.numerical_method = 'P-PDS'
problem3.model_selection.PATHparameters.numerical_method = 'DR'
problem1.model_selection.CVparameters.numerical_method = ' '
problem2.model_selection.CVparameters.numerical_method = ' '
problem3.model_selection.CVparameters.numerical_method = 'P-PDS'
problem1.model_selection.StabSelparameters.numerical_method = ' '
problem2.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.lam = 'theoretical'
problem1.model_selection.LAMfixedparameters.numerical_method = 'P-PDS'
problem2.model_selection.LAMfixedparameters.numerical_method = 'DR'
problem3.model_selection.LAMfixedparameters.numerical_method = 'Path-Alg'
problem1.model_selection.LAMfixedparameters.lam = 'theoretical'
problem1.formulation.e = ' '
problem2.formulation.e = ' '
problem3.formulation.e = ' '
problem1.formulation.concomitant = True
problem1.formulation.huber = False
problem1.formulation.classification = False
problem2.formulation.concomitant = True
problem2.formulation.huber = False
problem2.formulation.classification = False
problem3.formulation.concomitant = True
problem3.formulation.huber = False
problem3.formulation.classification = False
problem1.solve()
print(problem1)
problem1.solution.CV.graphic(ratio_mse_max = 10.)
print(problem1.solution)
problem2.solve()
print(problem2)
problem2.solution.CV.graphic(ratio_mse_max = 10.)
print(problem2.solution)
problem3.solve()
print(problem3)
problem3.solution.CV.graphic(ratio_mse_max = 10.)
print(problem3.solution)
problem1.model_selection.PATHparameters.numerical_method = ' '
problem2.model_selection.PATHparameters.numerical_method = 'P-PDS'
problem3.model_selection.PATHparameters.numerical_method = 'DR'
problem1.model_selection.CVparameters.numerical_method = ' '
problem2.model_selection.CVparameters.numerical_method = ' '
problem3.model_selection.CVparameters.numerical_method = 'P-PDS'
problem1.model_selection.StabSelparameters.numerical_method = ' '
problem2.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.lam = 'theoretical'
problem1.model_selection.LAMfixedparameters.numerical_method = 'P-PDS'
problem2.model_selection.LAMfixedparameters.numerical_method = 'DR'
problem3.model_selection.LAMfixedparameters.numerical_method = 'Path-Alg'
problem1.model_selection.LAMfixedparameters.lam = 'theoretical'
problem1.formulation.e = ' '
problem2.formulation.e = ' '
problem3.formulation.e = ' '
problem1.formulation.concomitant = True
problem1.formulation.huber = True
problem1.formulation.classification = False
problem2.formulation.concomitant = True
problem2.formulation.huber = True
problem2.formulation.classification = False
problem3.formulation.concomitant = True
problem3.formulation.huber = True
problem3.formulation.classification = False
problem1.solve()
print(problem1)
problem1.solution.CV.graphic(ratio_mse_max = 10.)
print(problem1.solution)
problem2.solve()
print(problem2)
problem2.solution.CV.graphic(ratio_mse_max = 10.)
print(problem2.solution)
problem3.solve()
print(problem3)
problem3.solution.CV.graphic(ratio_mse_max = 10.)
print(problem3.solution)
problem1.model_selection.PATHparameters.numerical_method = ' '
problem2.model_selection.PATHparameters.numerical_method = 'P-PDS'
problem3.model_selection.PATHparameters.numerical_method = 'DR'
problem1.model_selection.CVparameters.numerical_method = ' '
problem2.model_selection.CVparameters.numerical_method = ' '
problem3.model_selection.CVparameters.numerical_method = 'P-PDS'
problem1.model_selection.StabSelparameters.numerical_method = ' '
problem2.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.lam = 'theoretical'
problem1.model_selection.LAMfixedparameters.numerical_method = 'P-PDS'
problem2.model_selection.LAMfixedparameters.numerical_method = 'DR'
problem3.model_selection.LAMfixedparameters.numerical_method = 'Path-Alg'
problem1.model_selection.LAMfixedparameters.lam = 'theoretical'
problem1.formulation.concomitant = False
problem1.formulation.huber = False
problem1.formulation.classification = True
problem1.data.y = np.sign(problem1.data.y)
problem2.formulation.concomitant = False
problem2.formulation.huber = False
problem2.formulation.classification = True
problem2.data.y = np.sign(problem2.data.y)
problem3.formulation.concomitant = False
problem3.formulation.huber = False
problem3.formulation.classification = True
problem3.data.y = np.sign(problem3.data.y)
problem1.solve()
print(problem1)
problem1.solution.CV.graphic(ratio_mse_max = 10.)
print(problem1.solution)
problem2.solve()
print(problem2)
problem2.solution.CV.graphic(ratio_mse_max = 10.)
print(problem2.solution)
problem3.solve()
print(problem3)
problem3.solution.CV.graphic(ratio_mse_max = 10.)
print(problem3.solution)
problem1.model_selection.PATHparameters.numerical_method = ' '
problem2.model_selection.PATHparameters.numerical_method = 'P-PDS'
problem3.model_selection.PATHparameters.numerical_method = 'DR'
problem1.model_selection.CVparameters.numerical_method = ' '
problem2.model_selection.CVparameters.numerical_method = ' '
problem3.model_selection.CVparameters.numerical_method = 'P-PDS'
problem1.model_selection.StabSelparameters.numerical_method = ' '
problem2.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.numerical_method = ' '
problem3.model_selection.StabSelparameters.lam = 'theoretical'
problem1.model_selection.LAMfixedparameters.numerical_method = 'P-PDS'
problem2.model_selection.LAMfixedparameters.numerical_method = 'DR'
problem3.model_selection.LAMfixedparameters.numerical_method = 'Path-Alg'
problem1.model_selection.LAMfixedparameters.lam = 'theoretical'
problem1.formulation.concomitant = False
problem1.formulation.huber = True
problem1.formulation.classification = True
problem2.formulation.concomitant = False
problem2.formulation.huber = True
problem2.formulation.classification = True
problem3.formulation.concomitant = False
problem3.formulation.huber = True
problem3.formulation.classification = True
problem1.solve()
print(problem1)
problem1.solution.CV.graphic(ratio_mse_max = 10.)
print(problem1.solution)
problem2.solve()
print(problem2)
problem2.solution.CV.graphic(ratio_mse_max = 10.)
print(problem2.solution)
problem3.solve()
print(problem3)
problem3.solution.CV.graphic(ratio_mse_max = 10.)
print(problem3.solution)