Učení bez učitele

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Učení bez učitele

  • Učení bez učitele hledá vzory v datech
  • Např. shlukování zákazníků podle nákupů
  • Komprese dat pomocí nákupních vzorů (redukce dimenzionality)
Unsupervised Learning in Python

Učení s učitelem vs. bez učitele

  • Učení s učitelem hledá vzory pro predikci
  • Např. klasifikace nádorů jako benigních nebo maligních (popisky)
  • Učení bez učitele hledá vzory v datech
  • ... ale bez konkrétního predikčního úkolu
Unsupervised Learning in Python

Datová sada iris

  • Měření mnoha rostlin iris
  • Tři druhy iris:
    • setosa
    • versicolor
    • virginica
  • Délka a šířka okvětního lístku, délka a šířka kalichu (the features of the dataset)

Iris

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Unsupervised Learning in Python

Pole, příznaky a vzorky

  • 2D pole NumPy
  • Sloupce jsou měření (příznaky)
  • Řádky představují rostliny iris (vzorky)
Unsupervised Learning in Python

Data iris jsou 4rozměrná

  • Vzorky iris jsou body ve 4rozměrném prostoru
  • Dimenze = počet příznaků
  • Příliš mnoho dimenzí pro vizualizaci!
  • ... ale učení bez učitele přináší vhled
Unsupervised Learning in Python

Shlukování k-means

  • Nalézá shluky vzorků
  • Počet shluků musí být zadán
  • Implementováno v sklearn ("scikit-learn")
Unsupervised Learning in Python
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 ...
 [ 7.2  3.2  6.   1.8]]
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
KMeans(n_clusters=3)
labels = model.predict(samples)

print(labels)
[0 0 1 1 0 1 2 1 0 1 ...]
Unsupervised Learning in Python

Popisky shluků pro nové vzorky

  • Nové vzorky lze přiřadit k existujícím shlukům
  • K-means si pamatuje střed každého shluku ("centroid")
  • Nalezne nejbližší centroid pro každý nový vzorek
Unsupervised Learning in Python

Popisky shluků pro nové vzorky

print(new_samples)
[[ 5.7  4.4  1.5  0.4]
 [ 6.5  3.   5.5  1.8]
 [ 5.8  2.7  5.1  1.9]]
new_labels = model.predict(new_samples)

print(new_labels)
[0 2 1]
Unsupervised Learning in Python

Bodové grafy

  • Bodový graf: délka kalichu vs. délka okvětního lístku
  • Každý bod představuje jeden vzorek iris
  • Obarvení bodů podle popisků shluků
  • PyPlot (matplotlib.pyplot)

Bodový graf

Unsupervised Learning in Python

Bodové grafy

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Unsupervised Learning in Python

Lass uns üben!

Unsupervised Learning in Python

Preparing Video For Download...