Я играю с алгоритмом неотрицательной матричной факторизации (NMF) в базе данных MNIST и хочу визуализировать, как меняются первые 15 компонентов при уменьшении общего количества компонентов.
Сначала я загружаю базу данных MNISTи преобразовать его в массивы numPy
import numpy as np
from mnist import MNIST
mndata = MNIST('./data')
images_train, labels_train = mndata.load_training()
images_test, labels_test = mndata.load_testing()
labels_train = labels_train.tolist()
labels_test = labels_test.tolist()
X_train = np.array(images_train).astype('float64')
y_train = np.array(labels_train)
X_test = np.array(images_test).astype('float64')
y_test = np.array(labels_test)
Затем я строю модель NMF с 100
компонентами
from sklearn.decomposition import NMF
nmf = NMF(n_components=100, random_state=0)
nmf.fit(X_train)
и отображаю первые 15 компонентов
import matplotlib.pyplot as plt
fig, axes = plt.subplots(3, 5, figsize=(12, 7), subplot_kw={'xticks': (), 'yticks': ()})
for i, (component, ax) in enumerate(zip(nmf.components_, axes.ravel())):
ax.imshow(component.reshape(28,28), cmap=plt.cm.binary)
ax.set_title("{}. component".format(i + 1))
Вывод: ![enter image description here](https://i.stack.imgur.com/09jql.png)
Затем я повторяю тот же процесс для 50
компонентов
Вывод: ![enter image description here](https://i.stack.imgur.com/dC349.png)
и, наконец, для 15
компонентов
Вывод: ![enter image description here](https://i.stack.imgur.com/fotDs.png)
Интересно, плавно ли меняются первые 15 компонентов этих моделей NMF при уменьшении количестваВсего компонентов.Я хотел бы нарисовать целую кучу картинок, подобных приведенным выше, и отобразить их в анимации.Точнее, я бы хотел их анимировать, когда общее количество компонентов увеличивается от 100 до 15 с шагом, равным 5. Как я могу это сделать?