NMF вчиться на інтерпретованих частинах

Наглядове навчання в Python

Benjamin Wilson

Director of Research at lateral.io

Приклад: NMF вчиться на інтерпретованих частинах

  • Масив частот слів статей (tf-idf)
  • 20 000 наукових статей (рядки)
  • 800 слів (стовпці)

Масив частот слів у статтях

Наглядове навчання в Python

Застосування NMF до статей

print(articles.shape)
(20000, 800)
from sklearn.decomposition import NMF
nmf = NMF(n_components=10)
nmf.fit(articles)
NMF(n_components=10)
print(nmf.components_.shape)
(10, 800)
Наглядове навчання в Python

Компоненти NMF — це теми

 

nmf.components_

Наглядове навчання в Python

Компоненти NMF — це теми

 

один рядок nmf.components_ та стовпчиковий графік для кожного слова, де висота — це tfidf

Наглядове навчання в Python

Компоненти NMF — це теми

 

блок із топ-словами та значеннями: species 2.95, plant 1.05, plants 0.78 тощо

Наглядове навчання в Python

Компоненти NMF — це теми

 

новий блок із топ-словами з іншого рядка nmf.components_: university 3.57, prof 1.19, college 0.88 тощо

Наглядове навчання в Python

Компоненти NMF

  • Для документів:
    • Компоненти NMF — це теми
    • Ознаки NMF поєднують теми в документи
  • Для зображень компоненти NMF — це частини зображень

 

блок із 3 смужками приблизно дорівнює 0.98 × блок із однією смужкою плюс 0.91 × блок з іншою смужкою плюс 0.95 × блок з іншою смужкою

Наглядове навчання в Python

Зображення у відтінках сірого

  • «Grayscale»-зображення = без кольорів, лише відтінки сірого
  • Вимірюємо яскравість пікселя
  • Подання значенням між 0 і 1 (0 — чорний)
  • Перетворення на 2D-масив

прямокутник 2 на 3 пікселі з різними ступенями білого/чорного/сірого

Наглядове навчання в Python

Приклад зображення у відтінках сірого

  • Зображення місяця 8×8 у відтінках сірого, записане як масив

 

піксельоване зображення місяця зі стрілкою на масив чисел тих самих розмірів зі значеннями від 0 до 1

Наглядове навчання в Python

Зображення у відтінках сірого як «плоскі» масиви

  • Пронумеруйте елементи
  • Похідно по рядках
  • Зліва направо, зверху вниз

блок із пікселями 2 на 3, що вказує на масив з числами

Наглядове навчання в Python

Зображення у відтінках сірого як «плоскі» масиви

  • Пронумеруйте елементи
  • Похідно по рядках
  • Зліва направо, зверху вниз

блок із пікселями 2 на 3, що вказує на масив 2 на 3 з числами, який вказує на масив 1 на 6 чисел

Наглядове навчання в Python

Кодування колекції зображень

  • Колекція зображень одного розміру
  • Кодуйте як 2D-масив
  • Кожен рядок відповідає зображенню
  • Кожен стовпець відповідає пікселю
  • ... можна застосувати NMF!

Один рядок nmf.components_, що представляє зображення 2×3 пікселі

Наглядове навчання в Python

Візуалізація зразків

print(sample)
[ 0.   1.   0.5  1.   0.   1. ]
bitmap = sample.reshape((2, 3))
print(bitmap)
[[ 0.   1.   0.5]
 [ 1.   0.   1. ]]
from matplotlib import pyplot as plt
plt.imshow(bitmap, cmap='gray', interpolation='nearest')
plt.show()
Наглядове навчання в Python

Давайте потренуємось!

Наглядове навчання в Python

Preparing Video For Download...