Scikit-learn: Klassendesign für AgglomerativeClustering und FeatureAgglomeration verbessern (was pooling_func in AgglomerativeClustering nicht funktioniert)

Erstellt am 28. Sept. 2017  ·  3Kommentare  ·  Quelle: scikit-learn/scikit-learn

Beschreibung


pooling_func in AgglomerativeClustering funktioniert nicht.

Schritte/Code zum Reproduzieren

from sklearn import metrics
from sklearn.datasets.samples_generator import make_blobs
from sklearn.cluster import AgglomerativeClustering


centers = [[1, 1], [-1, -1], [1, -1]]
X, labels_true = make_blobs(n_samples=300, centers=centers, cluster_std=0.5,
                            random_state=0)

model = AgglomerativeClustering(linkage='complete',
                                connectivity=None,
                                affinity = 'cosine',
                                pooling_func = "test_error",
                                n_clusters=3)
model.fit(X)

erwartete Ergebnisse


Fehler auslösen, da pooling_func nicht aufrufbar ist. Es ist eine Schnur.

Tatsächliche Ergebnisse


Keine Warnung, kein Fehler

Versionen


Linux-4.4.0-64-generic-x86_64-with-debian-stretch-sid
Python 3.5.3 | verpackt von conda-forge | (Standard, 9. Februar 2017, 14:37:12)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)]
NumPy 1.13.1
SciPy 0.19.1
Scikit-Lernen 0.19.0

Easy help wanted

Alle 3 Kommentare

Es scheint mir, als wäre dies ein Problem mit dem Klassendesign: FeatureAgglomeration leitet sich von AgglomerativeClustering ab, aber pooling_func wird nur in AgglomerativeClustering.transform verwendet.

Zögern Sie nicht, eine PR zu eröffnen. Ich habe nicht im Detail nachgesehen, aber eine mögliche Lösung wäre, FeatureAgglomeration und AgglomerativeClustering von einer gemeinsamen Basisklasse abzuleiten und pooling_func nur in FeatureAgglomeration zu haben.

Trotzdem kann es Gründe geben, warum es so gemacht wurde, obwohl ich mir keinen vorstellen kann.

(Und FeatureAgglomeration sollte wahrscheinlich ein Wrapper oder ein Mixin sein ...)

Am 28.09.2017 um 21:24 Uhr schrieb "Loïc Estève" [email protected] :

Es scheint mir, als wäre dies ein Problem mit dem Klassendesign: FeatureAgglomeration
leitet sich von AgglomerativeClustering ab, aber pooling_func wird nur verwendet in
Agglomeratives Clustering.transform.

Zögern Sie nicht, eine PR zu eröffnen. Ich habe nicht im Detail geschaut, aber eine mögliche Lösung
wäre, FeatureAgglomeration und AgglomerativeClustering abzuleiten
aus einer gemeinsamen Basisklasse und haben pooling_func nur in FeatureAgglomeration.

Trotzdem kann es Gründe geben, warum es so gemacht wurde, obwohl ich
kann mir keine vorstellen.


Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/9846#issuecomment-332807654 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AAEz6z9lkUF7u0jA2-sWEe_XIZvUk1r_ks5sm4HdgaJpZM4PnBzV
.

Ich möchte dieses Thema aufgreifen, wenn es derzeit nicht bearbeitet wird.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen