-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhierarchical_clustering.py
72 lines (62 loc) · 1.83 KB
/
hierarchical_clustering.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plt
def hierarchical_clustering():
'''
Erstellen eines Datensatzes wie in der Vorlesung
'''
X = np.array([[5, 3],
[10, 15],
[15, 12],
[24, 10],
[30, 30],
[85, 70],
[71, 80],
[60, 78],
[70, 55],
[80, 91], ])
'''
Erstellen von Labels für jeden einzelnen Datensatz, was aber nur die Nummer ist,
damit man dies besser ins dendogram überfuehren kann
'''
labels = range(1, len(X)+1)
'''
figsize= width / height in inches
'''
plt.figure(figsize=(10, 7))
'''
IST DAS WIRKLICH NOTWENDIG?
'''
plt.subplots_adjust(bottom=0.1)
'''
Daten anzeigen lassen
X[:, 0] sind die X-Achsen Werte
X[:, 1] sind die Y-Achsen Werte
'''
plt.scatter(X[:, 0], X[:, 1], label='True Position')
'''
Hinzufügen der Datenpunkte
textcoords wird gesetzt, damit der Text nicht über dem Punkt steht
'''
for label, x, y in zip(labels, X[:, 0], X[:, 1]):
plt.annotate(
label,
xy=(x, y), xytext=(-3, 3),
textcoords='offset points', ha='right', va='bottom')
plt.show()
'''
linkage führt die eigentliche Zusammenfügung der immer am naheliegendsten Datenpunkte durch
single
'''
linked = linkage(X, 'single')
plt.figure(figsize=(10, 7))
'''
orientation ist, wo der Knoten sich befindet
distance_sort ist ein wenig der Aufbau, kann noch mit 'false' getestet werden
'''
dendrogram(linked,
orientation='top',
labels=labels,
distance_sort='descending'
)
plt.show()