コード例 #1
0
def normalization_test():
    X = np.random.rand(100, 100) - 100

    estimator = DictionaryLearning(k=10, dict_normalization=1)
    estimator.fit(X)

    C, D = estimator.decomposition()

    for i in range(D.shape[0]):
        np.testing.assert_approx_equal(np.linalg.norm(D[0, :]), 1)
コード例 #2
0
def right_number_of_atoms_test():
    X = np.random.rand(100, 100)

    estimator = DictionaryLearning(k=10)
    estimator.fit(X)

    C, D = estimator.decomposition()

    assert C.shape[1] == 10
    assert D.shape[0] == 10
コード例 #3
0
def non_negativity_decomposition_on_coefficients_test():
    X = np.random.rand(100, 100) - 100

    estimator = DictionaryLearning(k=5, non_negativity="coeff")
    estimator.fit(X)

    C, D = estimator.decomposition()

    assert np.min(C) >= 0
    assert np.min(D) < 0
コード例 #4
0
def non_negativity_decomposition_on_both_test():
    X = np.abs(np.random.rand(100, 100))

    estimator = DictionaryLearning(k=5, non_negativity="both")
    estimator.fit(X)

    C, D = estimator.decomposition()

    assert np.min(C) >= 0
    assert np.min(D) >= 0
コード例 #5
0
def wrong_range2_test():
    X, _, _ = synthetic_data_negative()
    estimator = DictionaryLearning(k=5,
                                   coeff_penalty=L1Penalty(1),
                                   dict_penalty=(L1Penalty(2)),
                                   non_negativity="coeff")
    tune_parameters_DL(X,
                       estimator,
                       analysis=1,
                       distributed=0,
                       dict_penalty_range=(-1, 1, 5),
                       coeff_penalty_range=(-1, 1, 5))
コード例 #6
0
ファイル: group_lasso.py プロジェクト: vishalbelsare/dalila
import matplotlib.pyplot as plt

from dalila.dictionary_learning import DictionaryLearning
from dalila.penalty import GroupLassoPenalty
from dalila.dataset_generator import group_lasso_dataset_generator

logging.basicConfig(level=logging.INFO)

signals, coefficients, atoms = group_lasso_dataset_generator()
plt.pcolor(coefficients, cmap=plt.cm.Reds)
plt.show()

decompositions = []
for i in np.linspace(0.1, 10, 15):
    estimator = DictionaryLearning(k=6,
                                   dict_penalty=None,
                                   coeff_penalty=GroupLassoPenalty(groups, i),
                                   non_negativity="coeff")

    estimator.fit(signals, n_iter=20000)
    decompositions.append(estimator.decomposition())
    print("finito", i)
    print("reconstruction error", estimator.reconstruction_error())
    print("\n\n")

for (i, d) in enumerate(decompositions):
    # it is necessary to reorder the atoms as they are declared in atoms to
    # see if the algorithm works
    C = d[0]
    D = d[1]
    new_D = np.empty_like(D)
    new_C = np.empty_like(C)
コード例 #7
0
def wrong_penalty_type_coeff_test():
    X = np.random.rand(100, 100)

    estimator = DictionaryLearning(k=5, coeff_penalty="")
    estimator.fit(X)
コード例 #8
0
def non_negative_parameter_but_negative_matrix_test():
    X = np.random.rand(100, 100) - 50

    estimator = DictionaryLearning(k=5, non_negativity="both")
    estimator.fit(X)
コード例 #9
0
def non_negative_parameter_test():
    X = np.random.rand(100, 100)

    estimator = DictionaryLearning(k=5, non_negativity="not_considered")
    estimator.fit(X)
コード例 #10
0
def negative_atoms_test():
    X = np.random.rand(100, 100)

    estimator = DictionaryLearning(k=-1, dict_penalty=None)
    estimator.fit(X)