Ich bin neu bei der Verwendung von scikit-learn und versuche, Leute zu clustern, die ihr Interesse am Film haben. Ich erstelle eine dünn besetzte Matrix, die verschiedene Spalten (eine für jeden Film) und Zeilen enthält. Für eine bestimmte Zelle ist es 0 oder 1, wenn der Benutzer den Film mochte oder nicht.Eingabematrix und Parameter für den DBSCAN-Algorithmus von scikit-learn
Ich halte dies für ein Array von Vektoren und aus dem Dokument ist dies eine akzeptable Eingabe.
Führen Sie DBSCAN-Clustering aus der Vektormatrix oder Abstandsmatrix durch.
Also versuche ich, etwas, was zu tun verwenden Scikit-Learn:
sparse_matrix = pickle.load(open("data/sparse_matrix"))
X = StandardScaler().fit_transform(sparse_matrix)
db = DBSCAN(eps=1, min_samples=20).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
print labels
Ich tat dies am Beispiel DBSCAN verwenden Scikit-Learn. Ich habe zwei Fragen, die erste lautet: "Ist meine Matrix gut formatiert und für diesen Algorithmus geeignet?" Ich habe diese Sorge, wenn ich die Anzahl der Dimensionen betrachte. Die zweite Frage lautet: "Wie stelle ich den Epsilon-Parameter ein (minimaler Abstand zwischen meinem Punkt)?"
Vielen Dank für Ihre Antwort. Aber wenn ich meinen Algorithmus so laufe wie er ist. Bekomme ich ein Ergebnis, das ein wenig kohärent ist, oder die Tatsache, dass ich keine spärliche Matrix und nicht die Kosinus-Distanz verwende, wird mein Ergebnis völlig nutzlos? – mel
Vielleicht funktioniert es, vielleicht nicht. 'StandardScaler' ist auch für kontinuierliche dichte Daten gedacht. Es wird nicht abstürzen. Aber Sie erhalten wahrscheinlich bessere Ergebnisse mit einem Cosinus-basierten Ansatz. Und du kennst Epsilon noch nicht, also musst du etwas mehr tun ... –