scikit-learn-contrib/hdbscan

'wminkowski' metric not working - weight array not passing through properly to the distance function

Aperta

#112 aperta il 30 mag 2017

 (10 commenti) (0 reazioni) (0 assegnatari)Jupyter Notebook (535 fork)github user discovery
bughelp wanted

Metriche repository

Star
 (3137 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Hi - I'm trying to use the weighted minkowski metric:

   clusterer = hdbscan.HDBSCAN(algorithm='best', alpha=1.0, approx_min_span_tree=True,
    gen_min_span_tree=False, leaf_size=40, 
    metric='wminkowski', min_cluster_size=20, min_samples=5, 
    core_dist_n_jobs=1, p=2,  w=[2, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.1, 0.1])

hdb_clusters = clusterer.fit(data)

Here is the error I get - it looks like the p and w arguments are not passing through all the way:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-174-0c6dd011773f> in <module>()
----> 1 hdb_clusters = clusterer.fit(data)

/usr/local/anaconda/lib/python3.5/site-packages/hdbscan/hdbscan_.py in fit(self, X, y)
    862          self._condensed_tree,
    863          self._single_linkage_tree,
--> 864          self._min_spanning_tree) = hdbscan(X, **kwargs)
    865 
    866         if self.prediction_data:

/usr/local/anaconda/lib/python3.5/site-packages/hdbscan/hdbscan_.py in hdbscan(X, min_cluster_size, min_samples, alpha, metric, p, leaf_size, algorithm, memory, approx_min_span_tree, gen_min_span_tree, core_dist_n_jobs, cluster_selection_method, allow_single_cluster, match_reference_implementation, **kwargs)
    604                                                approx_min_span_tree,
    605                                                gen_min_span_tree,
--> 606                                                core_dist_n_jobs, **kwargs)
    607 
    608     return _tree_to_labels(X,

/usr/local/anaconda/lib/python3.5/site-packages/sklearn/externals/joblib/memory.py in __call__(self, *args, **kwargs)
    281 
    282     def __call__(self, *args, **kwargs):
--> 283         return self.func(*args, **kwargs)
    284 
    285     def call_and_shelve(self, *args, **kwargs):

/usr/local/anaconda/lib/python3.5/site-packages/hdbscan/hdbscan_.py in _hdbscan_boruvka_balltree(X, min_samples, alpha, metric, p, leaf_size, approx_min_span_tree, gen_min_span_tree, core_dist_n_jobs, **kwargs)
    313         X = X.astype(np.float64)
    314 
--> 315     tree = BallTree(X, metric=metric, leaf_size=leaf_size, **kwargs)
    316     alg = BallTreeBoruvkaAlgorithm(tree, min_samples, metric=metric,
    317                                    leaf_size=leaf_size // 3,

sklearn/neighbors/binary_tree.pxi in sklearn.neighbors.ball_tree.BinaryTree.__init__ (sklearn/neighbors/ball_tree.c:9223)()

sklearn/neighbors/dist_metrics.pyx in sklearn.neighbors.dist_metrics.DistanceMetric.get_metric (sklearn/neighbors/dist_metrics.c:4824)()

sklearn/neighbors/dist_metrics.pyx in sklearn.neighbors.dist_metrics.WMinkowskiDistance.__init__ (sklearn/neighbors/dist_metrics.c:7811)()

TypeError: __init__() takes exactly 2 positional arguments (0 given)

Guida contributor