2016-06-01 13 views
0

Ich verwende DBSCAN, um Cluster von Pixelwerten eines RGB-Bildes zu finden.Wie sample_weights in sklearn.cluster DBSCAN zuweisen?

db = DBSCAN(eps=0.3, min_samples=10).fit(X)

wo X eine N x 3 Matrix. Jede Reihe von X enthält RGB-Triplets.

Nun möchte ich den Pixelwerten Gewichte als Funktion der Entfernung von der Bildmitte zuweisen. Und dies ist die Funktion Ich verwende:

score = 1/(1 + math.exp(-a * distance)) # a = 0.001

I weight_matrix mit score wie oben

Next gefüllt berechnen dies tat ich:

db = DBSCAN(eps=0.3, min_samples=10).fit(X,y=None, sample_weight=weight_matrix)

wo, Länge der

Das Array entspricht der Anzahl der Zeilen in X.

Aber ich erhalte den folgenden Fehler:

TypeError: fit() got an unexpected keyword argument 'y'

Also versuchte ich es, wie dies zu tun:

db = DBSCAN(eps=0.3, min_samples=10).fit(X, sample_weight=weight_matrix)

Jetzt bekomme ich diesen Fehler:

TypeError: fit() got an unexpected keyword argument 'sample_weight'

Ich denke, ich übergebe die Argumente falsch, aber ich bin mir nicht sicher. Meine scikit-learn Version ist 0.14.0.

+0

hast du vielleicht eine alte version installiert? –

+1

Werfen Sie einen Blick hier: http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html#sklearn.cluster.DBSCAN scheint es in Ordnung. Eine Sache, die ich mich frage, ist, was 'weight_matrix' für dich ist. Sie sagen, dass es die gleiche Anzahl von 'Reihen' wie' X' haben sollte, aber 'Gewicht_Matrix' sollte ein Array von' Länge' sein, das der Anzahl der Reihen in 'X' entspricht. Überprüfen Sie auch die Version, die Sie haben, möglicherweise nicht die neueste Version. – ZWiki

+0

@ZWiki: Danke für die Info über die Größe von '' weight_matrix'' Array. Ich habe den Beitrag bearbeitet. –

Antwort

2

Es scheint, dass Sie Scikit-Learn v verwenden < = 0,15, da dies die letzte Version ist, wo DBSCAN

der Form passen hatte
fit(X) 

seit 0,16 es

ist
fit(X, y=None, sample_weight=None) 

einfach aktualisieren dein scikit-lernen zu 0.16 oder 0.17.X

+0

Ich habe scikit-learn 0.17.1 installiert, aber jetzt stürzt es einfach ab. –

+0

Dann stellen Sie eine separate Frage, die zeigt, was genau passiert, was meinst du mit crushes – lejlot

+0

Wenn die DBSCAN(). Fit() -Methode aufgerufen wird. Es heißt "Killed" und geht. –