Învățare nesupervizată

Învățare nesupervizată în Python

Benjamin Wilson

Director of Research at lateral.io

Învățare nesupervizată

  • Învățarea nesupervizată identifică tipare în date
  • Ex., clustering al clienților după achiziții
  • Comprimarea datelor prin tipare de achiziții (reducerea dimensionalității)
Învățare nesupervizată în Python

Învățare supervizată vs. nesupervizată

  • Învățarea supervizată identifică tipare pentru predicție
  • Ex., clasificarea tumorilor ca benigne sau maligne (etichete)
  • Învățarea nesupervizată identifică tipare în date
  • ... dar fără o sarcină de predicție specifică
Învățare nesupervizată în Python

Setul de date Iris

  • Măsurători ale multor plante de iris
  • Trei specii de iris:
    • setosa
    • versicolor
    • virginica
  • Lungimea petalei, lățimea petalei, lungimea sepalei, lățimea sepalei (caracteristicile setului de date)

Iris

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Învățare nesupervizată în Python

Array-uri, caracteristici și eșantioane

  • Array NumPy 2D
  • Coloanele reprezintă măsurători (_caracteristicile_)
  • Rândurile reprezintă plante de iris (_eșantioanele_)
Învățare nesupervizată în Python

Datele Iris sunt 4-dimensionale

  • Eșantioanele Iris sunt puncte în spațiu 4-dimensional
  • Dimensiune = număr de caracteristici
  • Dimensiunea este prea mare pentru vizualizare!
  • ... dar învățarea nesupervizată oferă perspective
Învățare nesupervizată în Python

Clustering k-means

  • Identifică clustere de eșantioane
  • Numărul de clustere trebuie specificat
  • Implementat în sklearn ("scikit-learn")
Învățare nesupervizată în 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 ...]
Învățare nesupervizată în Python

Etichete de cluster pentru eșantioane noi

  • Eșantioanele noi pot fi atribuite clusterelor existente
  • k-means reține media fiecărui cluster ("centroizii")
  • Găsește cel mai apropiat centroid pentru fiecare eșantion nou
Învățare nesupervizată în Python

Etichete de cluster pentru eșantioane noi

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]
Învățare nesupervizată în Python

Grafice de dispersie

  • Grafic de dispersie: lungimea sepalei vs. lungimea petalei
  • Fiecare punct reprezintă un eșantion Iris
  • Colorarea punctelor după etichetele de cluster
  • PyPlot (matplotlib.pyplot)

Grafic de dispersie

Învățare nesupervizată în Python

Grafice de dispersie

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Învățare nesupervizată în Python

Să exersăm!

Învățare nesupervizată în Python

Preparing Video For Download...