Raster-Suche für hyperparameter evaluation von clustering in scikit-learn

Ich bin clustering eine Stichprobe von rund 100 Datensätze (unbeschrifteten) und versuchen, zu verwenden grid_search zur Bewertung der clustering Algorithmus mit verschiedenen hyperparameters. Ich bin scoring mit silhouette_score welche gut funktioniert.

Mein problem hier ist, dass ich nicht brauchen, um verwenden Sie die cross-Validierung Aspekt der GridSearchCV/RandomizedSearchCV, aber ich kann nicht finden, eine einfache GridSearch/RandomizedSearch. Ich kann schreiben, meine eigenen, sondern die ParameterSampler und ParameterGrid Objekte sind sehr hilfreich.

Mein Nächster Schritt wird sein, die Unterklasse BaseSearchCV und Umsetzung eigener _fit() Methode, aber dachte, es war es Wert zu Fragen, gibt es einen einfacheren Weg, dies zu tun, zum Beispiel durch die übergabe etwas cv parameter?

def silhouette_score(estimator, X):
    clusters = estimator.fit_predict(X)
    score = metrics.silhouette_score(distance_matrix, clusters, metric='precomputed')
    return score

ca = KMeans()
param_grid = {"n_clusters": range(2, 11)}

# run randomized search
search = GridSearchCV(
    ca,
    param_distributions=param_dist,
    n_iter=n_iter_search,
    scoring=silhouette_score,
    cv= # can I pass something here to only use a single fold?
    )
search.fit(distance_matrix)
  • Tun Sie das nicht cross-validation (grid-search) in unüberwachte data-mining. Nur die Berechnung der 10 Durchläufe des k-means, und die besten.
  • Offensichtlich tun Sie das nicht cross-Validierung, aber warum nicht grid-search erhält eine entsprechende scoring-Metrik wie die silhouette score?
  • Auch, kmeans ist nur ein Beispiel. Ich möchte zum testen eine Reihe von verschiedenen algorithmen und Ihre hyperparameters.
  • Genauso gut könnte man optimieren silhouette direkt dann. Erwarte nicht, dass das clustering-Ergebnis zu verbessern wirklich auf diese Weise. Am Ende, Sieh dir mal die Parameter Stimmen am besten mit der Silhouette. Es ist nur ein weiteres Kriterium als SSE.
  • Was würde ich tun, ohne dass mit einer der BaseSearchCV Unterklassen? Habe ich etwas verpasst-Funktion für die Optimierung hyperparameters, oder meinst du etwas schreiben, spezifisch für jeden Algorithmus?
  • Ich bin darauf hindeutet, direkt-Suche für die optimale Lösung silhouette, ohne Verwendung von clustering-Methode. Naive-enumeration funktioniert nicht, aber sagen evoluationary Optimierung oder so etwas wie dieses arbeiten kann. k-means nicht optimieren die silhouette, aber nicht sagen, es ist nicht ein Algorithmus der die nicht.
  • Ah, ich sehe. Ich kann wollen, um zusätzliche Dinge zu der scoring-Methode, obwohl (bevorzugte Größe von Clustern, die ähnlichkeit der Cluster-Größe, etc.), so dass ich bin wirklich auf der Suche nach einem Weg, etwas zu tun eine Menge, wie grid-search. Danke für die Vorschläge aber.
  • Bitte sehen Sie, wenn Sie this Ihre Frage beantwortet.

InformationsquelleAutor Jamie Bull | 2016-01-05
Schreibe einen Kommentar