AgglomerativeClusteringのpooling_funcが機能しません。
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)
pooling_funcは呼び出せないため、エラーが発生します。 文字列です。
警告なし、エラーなし
Linux-4.4.0-64-generic-x86_64-with-debian-stretch-sid
Python 3.5.3 | conda-forgeによってパッケージ化| (デフォルト、2017年2月9日、14:37:12)
[GCC 4.8.2 20140120(Red Hat 4.8.2-15)]
NumPy 1.13.1
SciPy 0.19.1
Scikit-Learn0.19.0
これはクラス設計の問題のように思えます。FeatureAgglomerationはAgglomerativeClusteringから派生していますが、pooling_funcはAgglomerativeClustering.transformでのみ使用されます。
気軽にPRを開いてください。 詳細は調べていませんが、考えられる解決策は、FeatureAgglomerationとAgglomerativeClusteringを共通の基本クラスから派生させ、FeatureAgglomerationにのみpooling_funcを含めることです。
なんとも言えないのですが、こういう風にやったのには理由があるのかもしれません。
(そして、FeatureAgglomerationはおそらくラッパーまたはミックスインである必要があります...)
2017年9月28日午後9時24分、「LoïcEstève」 [email protected]は次のように書いています。
これはクラス設計の問題のように思えます:FeatureAgglomeration
AgglomerativeClusteringから派生しますが、pooling_funcはでのみ使用されます
AgglomerativeClustering.transform。気軽にPRを開いてください。 私は詳細には調べていませんが、可能な解決策です
FeatureAgglomerationとAgglomerativeClusteringを派生させることになるでしょう
共通の基本クラスからのものであり、FeatureAgglomerationにのみpooling_funcがあります。こう言ったのにこうしてやったのには理由があるのかも
何も考えられない。—
このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/scikit-learn/scikit-learn/issues/9846#issuecomment-332807654 、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAEz6z9lkUF7u0jA2-sWEe_XIZvUk1r_ks5sm4HdgaJpZM4PnBzV
。
現在取り組んでいない場合は、この問題を取り上げたいと思います。