Heute folgt [SciPy und NumPy] auf Gestern Ein Beispiel für die Verwendung von scikit-learn aus Optimieren und Boosten Ihrer Python-Programmierung Ich werde es kurz erklären. In Bezug auf Clustering Speisepilze identifizieren und Clustering-Ergebnisse wiederverwenden ) Und [Clustering mit Scikit-Learn] ](Http://qiita.com/ynakayama/items/ab2d89be36d3cdaeb4f2) Ich habe mich damit befasst, daher denke ich, dass es eine vertraute Methode beim maschinellen Lernen ist.
Kernpunkte mit mehr Datenpunkten im Vergleich zu den beliebten kmeans Der DBSCAN-Algorithmus (http://en.wikipedia.org/wiki/DBSCAN) wiederholt den Vorgang innerhalb des Radius, der bei der Definition des Kerns angegeben wurde. Diese Technik wird häufig mit km-Werten für verrauschte Daten verglichen.
Die Originalarbeit vergleicht und visualisiert auch diese Methoden. Lass es uns gleich versuchen.
import numpy as np
import matplotlib.pyplot as mpl
from scipy.spatial import distance
from sklearn.cluster import DBSCAN
#Generieren Sie zunächst Beispieldaten mit Zufallszahlen
c1 = np.random.randn(100, 2) + 5
c2 = np.random.randn(50, 2)
#Gleichmäßige Verteilung erzeugen und stapeln
u1 = np.random.uniform(low=-10, high=10, size=100)
u2 = np.random.uniform(low=-10, high=10, size=100)
c3 = np.column_stack([u1, u2])
#Speichern Sie alle Daten in einem 150 x 2-Array
data = np.vstack([c1, c2, c3])
#Clustering mit DBSCAN
# db.labels_Ist ein Array mit Bezeichnern für verschiedene Cluster in den Daten
db = DBSCAN().fit(data)
labels = db.labels_
#Holen Sie sich die Koordinaten für jeden Kern
#Zwei Cluster sind 0 und 1, das Rauschen ist-Klassifiziert als 1
#Teilen Sie diese
dbc1 = data[labels == 0] #Negatives Beispiel
dbc2 = data[labels == 1] #Positives Beispiel
noise = data[labels == -1] #Lärm
Das Merkmal ist, dass Rauschen auf diese Weise getrennt werden kann.
Visualisieren wir es mit der bekannten matplotlib.
x1, x2 = -12, 12
y1, y2 = -12, 12
fig = mpl.figure()
fig.subplots_adjust(hspace=0.1, wspace=0.1)
ax1 = fig.add_subplot(121, aspect='equal')
ax1.scatter(c1[:, 0], c1[:, 1], lw=0.5, color='#00CC00')
ax1.scatter(c2[:, 0], c2[:, 1], lw=0.5, color='#028E9B')
ax1.scatter(c3[:, 0], c3[:, 1], lw=0.5, color='#FF7800')
ax1.xaxis.set_visible(False)
ax1.yaxis.set_visible(False)
ax1.set_xlim(x1, x2)
ax1.set_ylim(y1, y2)
ax1.text(-11, 10, 'Original')
ax2 = fig.add_subplot(122, aspect='equal')
ax2.scatter(dbc1[:, 0], dbc1[:, 1], lw=0.5, color='#00CC00')
ax2.scatter(dbc2[:, 0], dbc2[:, 1], lw=0.5, color='#028E9B')
ax2.scatter(noise[:, 0], noise[:, 1], lw=0.5, color='#FF7800')
ax2.xaxis.set_visible(False)
ax2.yaxis.set_visible(False)
ax2.set_xlim(x1, x2)
ax2.set_ylim(y1, y2)
ax2.text(-11, 10, 'DBSCAN identified')
fig.savefig('image.png', bbox_inches='tight')
Recommended Posts