Goodevening для всех. Я не могу понять вывод функции Spams.lassoWeighted. Если вы запустите пример на своей странице http://spams-devel.gforge.inria.fr/doc-python/html/doc_spams005.html#sec16:SPAMS. spams.lassoСветовое неправильное выпадение?
import spams
import numpy as np
np.random.seed(0)
print "test lasso weighted"
##############################################
# Decomposition of a large number of signals
##############################################
# data generation
X = np.asfortranarray(np.random.normal(size=(64,10000)))
X = np.asfortranarray(X/np.tile(np.sqrt((X*X).sum(axis=0)),(X.shape[0],1)),dtype= myfloat)
D = np.asfortranarray(np.random.normal(size=(64,256)))
D = np.asfortranarray(D/np.tile(np.sqrt((D*D).sum(axis=0)),(D.shape[0],1)),dtype= myfloat)
param = { 'L' : 20,
'lambda1' : 0.15, 'numThreads' : 8, 'mode' : spams.PENALTY}
W = np.asfortranarray(np.random.random(size = (D.shape[1],X.shape[1])),dtype= myfloat)
tic = time.time()
alpha = spams.lassoWeighted(X,D,W,**param)
tac = time.time()
t = tac - tic
print "%f signals processed per second\n" %(float(X.shape[1])/t)
вы получите в качестве выходного сигнала матрицы А 64x1, который содержит только один ненулевой элемент. И это то же самое для каждого случая, которое он дает каждый раз только один ненулевой элемент на сигнал. Я не могу понять, почему решение при || x-Dα || 2 + λ || diag (w) α || 1. было бы с одним только ненулевым элементом?