2017-02-09 8 views
2

Я использую sklearns OrthogonalMatchingPursuit, чтобы получить разреженное кодирование сигнала с использованием словаря, полученного с помощью KSVD algorithm. Тем не менее, во время припадка я получаю следующее RuntimeWarning:Исключение исключение в словарях в sklearns OMP

/usr/local/lib/python2.7/dist-packages/sklearn/linear_model/omp.py:391: RuntimeWarning: Orthogonal matching pursuit ended prematurely due to linear 
dependence in the dictionary. The requested precision might not have been met. 

    copy_X=copy_X, return_path=return_path) 

В этих случаях результаты являются на самом деле не является удовлетворительным. Я не понимаю этого предупреждения, поскольку в разреженном кодировании распространено слишком неполное словосочетание, а также линейная зависимость внутри него. Это не должно быть проблемой для OMP. На самом деле предупреждение также возникает, если словарь является квадратной матрицей.

Возможно, это предупреждение также указывает на другие проблемы в приложении?

ответ

1

Проблема заключалась в векторе y данных в

omp = OrthogonalMatchingPursuit(n_nonzero_coefs=target_sparsity) 
omp.fit(D, y) 

Он содержал цифры с очень малой величиной. Когда я нормализую y, а также D, подгонка работает с ожидаемой точностью.

+0

Не могли бы вы объяснить, как вы нормализировали данные? Вы оценили их в определенном диапазоне? – EdgeRover

+0

Я применил прямолинейную нормализацию столбца, т. Е. Каждый столбец словаря 'D', а также вектор данных' y' имеет норму L2 единицы. – obachtos