DBSCAN implementiert in scikit-learn )
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import numpy as np
from sklearn import cluster
"""Geben Sie die Parameter an"""
dbscan = cluster.DBSCAN(eps=float(sys.argv[1]), min_samples=int(sys.argv[2]))
"""Daten lesen"""
data_list = []
for line in open(sys.argv[3]):
x = map(float, line.rstrip().split(' '))
data_list.append(x)
data = np.array(data_list)
"""Clustering"""
dbscan.fit(data)
"""Ergebnisse anzeigen"""
labels = dbscan.labels_
for i in range(len(labels)):
if labels[i] != -1:
print labels[i], data[i]
Bereiten Sie die folgende Datei vor, die die Beispieldaten in der Zeile und den Wert des Attributs beschreibt, das in die Spalte geschrieben werden soll.
0 1
8.5 6
2 0
1.5 0
1 1.5
10 5
9 6
8 5.5
9.5 5.6
100 100
-100 -50
1 0
Führen Sie dies aus, indem Sie eps, min_samples und data_file in dieser Reihenfolge als Argumente übergeben
>> python dbscan.py 1.5 3 data
0.0 [ 0. 1.]
1.0 [ 8.5 6. ]
0.0 [ 2. 0.]
0.0 [ 1.5 0. ]
0.0 [ 1. 1.5]
1.0 [ 10. 5.]
1.0 [ 9. 6.]
1.0 [ 8. 5.5]
1.0 [ 9.5 5.6]
0.0 [ 1. 0.]
dbscan.labels_
zeigt an, welchem Cluster jede Probe zugewiesen wurde.
Wenn es "-1" ist, bedeutet dies, dass das Rauschen keinem Cluster zugewiesen werden kann.
Recommended Posts