выход fit_transform против компонент_ в sklearn.decomposition.DictionaryLearning - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь понять значения, возвращаемые методом fit_transform и массивом components_ в sklearn.decomposition.DictionaryLearning.

Из документации кажется, что fit_transform возвращает редко представленный вводdata и components_ содержат атомы.

Я запустил sklearn.decomposition.DictionaryLearning для набора данных цифр, используя этот код:

sample_data=digits.data[:40,:]    
dl = DictionaryLearning(n_components=36, fit_algorithm='lars', transform_algorithm='lasso_lars')
    X_dict = dl.fit_transform(sample_data) 

Когда я строю X_dict, возвращенный fit_transform (который в соответствии сdocs - это преобразованные входные данные), используя этот код:

fig = plt.figure(figsize=(6, 6))
for i in range(36):
    ax = fig.add_subplot(6, 6, i + 1, xticks=[], yticks=[])
    ax.imshow(X_dict.reshape(-1, 6, 6)[i], cmap='Greys_r',
              interpolation='nearest') 

вот что я получаю: enter image description here

Когда я строю содержимое компонентов_ (котороедолжен напечатать атомы) используя этот код:

fig, ax = plt.subplots(6, 6, figsize=(8, 8))

samples = [dl.components_[x].reshape((8, 8)) for x in range(34)]

for i in range(6):
    for j in range(6):
        ax[i, j].set_axis_off()
        ax[i, j].imshow(samples[(i * 5) + j], cmap='gray')

plt.show()

вот что я получаю:

enter image description here

Теперь мой вопрос,это правильно?Исходя из моего понимания изучения словаря, я чувствую, что первое изображение больше похоже на атомы, а последнее больше похоже на преобразованный ввод.

Может кто-нибудь объяснить, пожалуйста, разницу между атомами и преобразованными данными и сказать мне, какой изэти образы какие?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...