Oövervakad inlärning

Oövervakad inlärning i Python

Benjamin Wilson

Director of Research at lateral.io

Oövervakad inlärning

  • Oövervakad inlärning hittar mönster i data
  • T.ex. klustring av kunder baserat på köp
  • Komprimering av data med köpmönster (dimensionsreduktion)
Oövervakad inlärning i Python

Övervakad vs. oövervakad inlärning

  • Övervakad inlärning hittar mönster för en prediktionsuppgift
  • T.ex. klassificera tumörer som godartade eller cancerartade (etiketter)
  • Oövervakad inlärning hittar mönster i data
  • ... men utan en specifik prediktionsuppgift
Oövervakad inlärning i Python

Iris-datamängden

  • Mätningar från många irisplantor
  • Tre irisarter:
    • setosa
    • versicolor
    • virginica
  • Kronbladsländ, kronbladsbredd, foderbladsländ, foderbladsbredd (datamängdens särdrag)

Iris

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Oövervakad inlärning i Python

Arrayer, särdrag och urval

  • Tvådimensionell NumPy-array
  • Kolumner är mätningar (särdrag)
  • Rader representerar irisplantor (urval)
Oövervakad inlärning i Python

Iris-data är 4-dimensionell

  • Irisurval är punkter i ett 4-dimensionellt rum
  • Dimension = antal särdrag
  • För hög dimension för att visualisera!
  • ... men oövervakad inlärning ger insikt
Oövervakad inlärning i Python

k-means-klustring

  • Hittar kluster av urval
  • Antalet kluster måste anges
  • Implementerat i sklearn ("scikit-learn")
Oövervakad inlärning i 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 ...]
Oövervakad inlärning i Python

Klusteretikett för nya urval

  • Nya urval kan tilldelas befintliga kluster
  • k-means kommer ihåg medelvärdet för varje kluster ("centroider")
  • Hittar närmaste centroid för varje nytt urval
Oövervakad inlärning i Python

Klusteretikett för nya urval

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]
Oövervakad inlärning i Python

Spridningsdiagram

  • Spridningsdiagram: foderbladsländ vs. kronbladsländ
  • Varje punkt representerar ett irisurval
  • Färgsätt punkter efter klusteretikett
  • PyPlot (matplotlib.pyplot)

Spridningsdiagram

Oövervakad inlärning i Python

Spridningsdiagram

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Oövervakad inlärning i Python

Nu kör vi en övning!

Oövervakad inlärning i Python

Preparing Video For Download...