Scikit-learn: Melhorar o design da classe para AgglomerativeClustering e FeatureAgglomeration (was pooling_func em AgglomerativeClustering não funciona)

Criado em 28 set. 2017  ·  3Comentários  ·  Fonte: scikit-learn/scikit-learn

Descrição


pooling_func em AgglomerativeClustering não funciona.

Etapas / código para reproduzir

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)

resultados esperados


Gerar erro porque o pooling_func não pode ser chamado. É uma corda.

Resultados reais


Sem aviso, sem erro

Versões


Linux-4.4.0-64-generic-x86_64-with-debian-stretch-sid
Python 3.5.3 | embalado por conda-forge | (padrão, 9 de fevereiro de 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

Todos 3 comentários

Parece-me que este é um problema de design de classe: FeatureAgglomeration deriva de AgglomerativeClustering, mas pooling_func é usado apenas em AgglomerativeClustering.transform.

Sinta-se à vontade para abrir um PR. Não olhei em detalhes, mas uma solução possível seria fazer com que FeatureAgglomeration e AgglomerativeClustering derivem de uma classe base comum e ter pooling_func apenas em FeatureAgglomeration.

Dito isto, pode haver razões para ter sido feito assim, embora eu não consiga pensar em nenhuma.

(E FeatureAgglomeration provavelmente deve ser um wrapper ou um mixin ...)

Em 28 de setembro de 2017, 21:24, "Loïc Estève" [email protected] escreveu:

Parece-me que este é um problema de design de classe: FeatureAgglomeration
deriva de AgglomerativeClustering, mas pooling_func só é usado em
AgglomerativeClustering.transform.

Sinta-se à vontade para abrir um PR. Eu não procurei em detalhes, mas uma possível solução
seria ter FeatureAgglomeration e AgglomerativeClustering derivado
de uma classe base comum e têm pooling_func apenas em FeatureAgglomeration.

Dito isto, pode haver razões para ter sido feito desta forma, embora eu
não consigo pensar em nenhum.

-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/scikit-learn/scikit-learn/issues/9846#issuecomment-332807654 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AAEz6z9lkUF7u0jA2-sWEe_XIZvUk1r_ks5sm4HdgaJpZM4PnBzV
.

Quero abordar esse problema se não estiver sendo trabalhado no momento.

Esta página foi útil?
0 / 5 - 0 avaliações