Scikit-learn: Améliorer la conception des classes pour AgglomerativeClustering et FeatureAgglomeration (pooling_func dans AgglomerativeClustering ne fonctionnait pas)

Créé le 28 sept. 2017  ·  3Commentaires  ·  Source: scikit-learn/scikit-learn

La description


pooling_func dans AgglomerativeClustering ne fonctionne pas.

Étapes/Code à reproduire

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)

Résultats attendus


Générez une erreur car pooling_func n'est pas appelable. C'est une chaîne.

Résultats actuels


Pas d'avertissement, pas d'erreur

Versions


Linux-4.4.0-64-generic-x86_64-with-debian-stretch-sid
Python 3.5.3 | emballé par conda-forge | (par défaut, 9 février 2017, 14:37:12)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)]
NumPy 1.13.1
SciPy 0.19.1
Scikit-Learn 0.19.0

Easy help wanted

Tous les 3 commentaires

Il me semble que c'est un problème de conception de classe : FeatureAgglomération dérive d'AgglomerativeClustering mais pooling_func n'est utilisé que dans AgglomerativeClustering.transform.

N'hésitez pas à ouvrir un PR. Je n'ai pas regardé en détail, mais une solution possible serait de faire dériver FeatureAgglomération et AgglomerativeClustering d'une classe de base commune et d'avoir pooling_func uniquement dans FeatureAgglomeration.

Cela dit, il peut y avoir des raisons pour lesquelles cela a été fait comme ça, bien que je ne puisse en penser à aucune.

(Et FeatureAgglomération devrait probablement être un wrapper ou un mixin...)

Le 28 sept. 2017 21h24, "Loïc Estève" [email protected] a écrit :

Il me semble que c'est un problème de conception de classe : FeatureAgglomération
dérive de AgglomerativeClustering mais pooling_func n'est utilisé que dans
AgglomerativeClustering.transform.

N'hésitez pas à ouvrir un PR. je n'ai pas regardé en détail mais une solution possible
serait de faire dériver FeatureAgglomeration et AgglomerativeClustering
à partir d'une classe de base commune et avoir pooling_func uniquement dans FeatureAgglomération.

Cela dit, il peut y avoir des raisons pour lesquelles cela a été fait comme ça bien que je
ne peut penser à aucun.

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/scikit-learn/scikit-learn/issues/9846#issuecomment-332807654 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AAEz6z9lkUF7u0jA2-sWEe_XIZvUk1r_ks5sm4HdgaJpZM4PnBzV
.

Je veux aborder cette question si elle n'est pas en cours d'élaboration.

Cette page vous a été utile?
0 / 5 - 0 notes