NMF lernt Bestandteile von Bildern
Wende nun das an, was du über NMF gelernt hast, um den Digits-Datensatz zu zerlegen. Die Ziffernbilder stehen dir wieder als 2D-Array namens samples zur Verfügung. Dieses Mal steht dir außerdem eine Funktion show_as_image() zur Verfügung, die das durch ein beliebiges eindimensionales Array codierte Bild anzeigt:
def show_as_image(sample):
bitmap = sample.reshape((13, 8))
plt.figure()
plt.imshow(bitmap, cmap='gray', interpolation='nearest')
plt.colorbar()
plt.show()
Wenn du fertig bist, schau dir die Plots in Ruhe an und achte darauf, wie NMF die Ziffer als Summe der Komponenten darstellt!
Diese Übung ist Teil des Kurses
<Kurs>Unsupervised Learning in Python</Kurs>Übungsanweisungen
- Importiere
NMFaussklearn.decomposition. - Erstelle eine
NMF-Instanz namensmodelmit7Komponenten. (7 ist die Anzahl der Zellen in einer LED-Anzeige). - Wende die Methode
.fit_transform()vonmodelaufsamplesan. Weise das Ergebnisfeatureszu. - Wende für jede Komponente des Modells (zugreifbar über
model.components_) innerhalb der Schleife die Funktionshow_as_image()auf diese Komponente an. - Weise die Zeile
0vonfeaturesdigit_featureszu. - Gib
digit_featuresaus.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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)