NMF выделяет части изображений
Теперь применим NMF для разложения набора данных с цифрами. Изображения цифр снова представлены в виде двумерного массива samples. На этот раз вам также предоставлена функция show_as_image(), которая отображает изображение, закодированное в виде одномерного массива:
def show_as_image(sample):
bitmap = sample.reshape((13, 8))
plt.figure()
plt.imshow(bitmap, cmap='gray', interpolation='nearest')
plt.colorbar()
plt.show()
После выполнения задания изучите полученные графики и обратите внимание на то, как NMF представляет цифру в виде суммы компонент!
Это упражнение является частью курса
Обучение без учителя на Python
Инструкции к упражнению
- Импортируйте
NMFизsklearn.decomposition. - Создайте экземпляр
NMFс именемmodel, указав7компонент (7 — это количество сегментов на светодиодном дисплее). - Примените метод
.fit_transform()объектаmodelкsamples. Сохраните результат в переменнуюfeatures. - Для каждой компоненты модели (доступной через
model.components_) вызовите внутри цикла функциюshow_as_image(), передав эту компоненту в качестве аргумента. - Присвойте строку
0массиваfeaturesпеременнойdigit_features. - Выведите
digit_featuresна экран.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import NMF
____
# Create an NMF model: model
model = ____
# Apply fit_transform to samples: features
features = ____
# Call show_as_image on each component
for component in model.components_:
____
# Select the 0th row of features: digit_features
digit_features = ____
# Print digit_features
print(digit_features)