Schrittweises Zusammenführen
Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 16 von 51.
In diesem Kapitel erstellst du einen Stammbaum deiner Daten und teilst ihn dann in Gruppen auf. Hier sind zehn Sportbälle, nach Größe und Gewicht:
Der Baum wächst von unten nach oben. Beginne mit jedem Punkt für sich allein, führe die beiden nächstgelegenen Gruppen zusammen und wiederhole den Vorgang:
Der Abstand zwischen zwei Gruppen ist der Abstand zwischen ihren Mittelwerten. Eine Zusammenführung mit Listen:
groups = [[2], [7], [15, 19], [33]]
groups[0] = groups[0] + groups[1] # die Listen zusammenfügen
groups.pop(1) # [7] entfernen, jetzt in Gruppe 0
print(groups)Dies gibt [[2, 7], [15, 19], [33]] aus. Zusammenführung um Zusammenführung, das ist agglomeratives Clustering.
Aufgabe
MittelFamilien stellen ihre Sonnenschirme am Strand dicht beieinander auf. Gruppiere die 10 Sonnenschirme in spots durch Zusammenführen, bis wanted Gruppen übrig sind. closest_pair(groups) gibt die Positionen i, j der beiden Gruppen zurück, die einander am nächsten sind.
- Beginne mit jedem Sonnenschirm einzeln in einer Liste mit einem Element.
- Solange es mehr Gruppen als
wantedgibt: Gib die Zusammenführung aus, füge das Paar zusammen und entferne die zweite Gruppe. - Gib die übrig gebliebenen Gruppen aus.
Für andere Sonnenschirme und wanted 3:
Merge [33] and [35]
Merge [30] and [33, 35]
Merge [3] and [8]
3 groups: [[3, 8], [30, 33, 35], [70]]Probier es selbst
import numpy as np
# Standorte der 10 Sonnenschirme, in Metern vom Rettungsschwimmerturm entfernt
spots = [2, 9, 11, 31, 45, 46, 69, 74, 92, 96]
# Gibt i, j (i < j) zurück: die Positionen der beiden Gruppen, deren Mittelwerte am nächsten beieinanderliegen
def closest_pair(groups):
best_i, best_j = 0, 1
best_gap = abs(np.mean(groups[0]) - np.mean(groups[1]))
for i in range(len(groups)):
for j in range(i + 1, len(groups)):
gap = abs(np.mean(groups[i]) - np.mean(groups[j]))
if gap < best_gap:
best_i, best_j, best_gap = i, j, gap
return best_i, best_j
wanted = int(input())
# Schreibe deinen Code unten
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Unüberwachtes Lernen
1Gruppen finden
Lernen ohne LabelsÄhnlichkeit messenK-Means von HandK-Means mit scikit-learnRückblick: Fitnessstudiomitglieder4Hierarchisches Clustering
Schrittweises ZusammenführenAgglomerative ModelleDendrogrammeZusammenfassung: Hunderassen7PCA in der Praxis
64 Dimensionen sehenKomponenten als MusterKomprimieren und rekonstruierenPCA vor einem ModellRückblick: Gesichtsscanner10Projekt: Ziffern erkunden
Die Ziffern ansehenMit PCA verkleinernDie Ziffern gruppierenDie Gruppen benennenDie Ausreißer finden2k wählen
TrägheitDie Elbow-MethodeSilhouettenwerteVor dem Clustering skalierenRückblick: LieferzonenÜbe selbstständig: Online-Python-Compiler