๋ค์์ ํตํด ๊ฐ๋จํ ๋ฐ์ดํฐ ํ๋ ์ ์์ฑ
x = np.linspace(0,100,200)
y = np.arange(0,200)
xy, _ = np.meshgrid(x,y)
noise = 0.3*np.random.random((200,200))
series = np.sin(xy+5*noise) + noise
series [0,:] += 10*np.random.random(200)
data = pd.DataFrame(series)
๊ธฐ๋ณธ ์ธ์๋ก HDBSCAN ํด๋ฌ์คํฐ๋ง์ ์คํํ๋ ค๊ณ ํฉ๋๋ค.
clusterer = hdbscan.HDBSCAN().fit(data)
๊ทธ๋ฆฌ๊ณ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
TypeError Traceback (most recent call last)
<ipython-input-58-31e012db38f8> in <module>()
1 from sklearn.cluster import DBSCAN
----> 2 clusterer = hdbscan.HDBSCAN().fit(data)
~/anaconda3/envs/py36/lib/python3.6/site-packages/hdbscan/hdbscan_.py in fit(self, X, y)
814 self._condensed_tree,
815 self._single_linkage_tree,
--> 816 self._min_spanning_tree) = hdbscan(X, **kwargs)
817
818 if self.prediction_data:
~/anaconda3/envs/py36/lib/python3.6/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)
534 _hdbscan_prims_kdtree)(X, min_samples, alpha,
535 metric, p, leaf_size,
--> 536 gen_min_span_tree, **kwargs)
537 else:
538 (single_linkage_tree, result_min_span_tree) = memory.cache(
~/anaconda3/envs/py36/lib/python3.6/site-packages/sklearn/externals/joblib/memory.py in __call__(self, *args, **kwargs)
360
361 def __call__(self, *args, **kwargs):
--> 362 return self.func(*args, **kwargs)
363
364 def call_and_shelve(self, *args, **kwargs):
~/anaconda3/envs/py36/lib/python3.6/site-packages/hdbscan/hdbscan_.py in _hdbscan_prims_kdtree(X, min_samples, alpha, metric, p, leaf_size, gen_min_span_tree, **kwargs)
168
169 # TO DO: Deal with p for minkowski appropriately
--> 170 dist_metric = DistanceMetric.get_metric(metric, **kwargs)
171
172 # Get distance to kth nearest neighbour
TypeError: descriptor 'get_metric' requires a 'hdbscan.dist_metrics.DistanceMetric' object but received a 'str'
metric = 'manhattan' ๋ฑ์ ์ธ์๋ก ๋ค๋ฅธ ๋ฉํธ๋ฆญ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ค๊ณ ์๋ํ์ง๋ง ๋์์ด ๋์ง ์์์ต๋๋ค.
์๋ง๋ ์ถ๊ฐ๋ก ์ธํ ์ฝ๋ ์ด๋๊ฐ์ arg ์์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ์ฝ๊ฐ ๋นํฉ์ค๋ฝ์ต๋๋ค. ์ค๋ ๋์ค์ ์ถ์ ํ ์ ์๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
์ฃ์กํฉ๋๋ค, ์ค๋ ์๊ฐ์ด ๋ถ์กฑํ์ต๋๋ค. ์ด ๋ถ๋ถ์ ์กฐ๊ธ ์๋ค๊ฐ ํด๋ด์ผ๊ฒ ๋ค์. ์ง์ฐ์ ๋ํด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
๋ํ "TypeError: ์ค๋ช ์ 'get_metric'์ ์ป์ผ๋ ค๋ฉด 'hdbscan.dist_metrics.DistanceMetric' ๊ฐ์ฒด๊ฐ ํ์ํ์ง๋ง ๋ฌธ์์์ ๊ฐ๋จํ ๋์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ 'str''์ ๋ฐ์์ต๋๋ค.
RobustSingleLinkage์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
get_metric ๋ฉ์๋๊ฐ ์์ํ ๊ฐ์ฒด ๋์ 'euclidean' ๋๋ 'manhattan' ๋ฑ์ ๋ฌธ์์ด์ ๋ฐ๋ ๊ฒ์ ํผํ๋ ค๊ณ ํ ๋ ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ๊ฑฐ๋ฆฌ ํ๋ ฌ์ ์ฌ์ฉํ์ต๋๋ค. ์ด์ ๋ค์์ ์ป๊ณ ์์ต๋๋ค.
NameError Traceback(๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง)
----> 1 ํด๋ฌ์คํฐ๋ฌ = hdbscan.HDBSCAN(min_cluster_size=5, min_samples=None, metric='๋ฏธ๋ฆฌ ๊ณ์ฐ๋จ').fit(D)
C:\Users\centec7\AppData\Local\Continuum\Anaconda3\lib\site-packages\hdbscan\hdbscan_.py in fit(self, X, y)
814ํ
815ํ
--> 816 self._min_spanning_tree) = hdbscan(X, **kwargs)
817
818 if self.prediction_data:
C:\Users\centec7\AppData\Local\Continuum\Anaconda3\lib\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)526 _hdbscan_generic)(X, min_samples,527 ์ํ, ๋ฏธํฐ๋ฒ, p, leaf_size,--> 528 gen_min_span_tree, * kwargs)
KDTree.valid_metrics์ 529 elif ๋ฉํธ๋ฆญ:
530 # ํด์ผ ํ ์ผ: boruvka์ ๊ฐ ์๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ค๋ฉด ๊ฒฝํ์ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
C:\Users\centec7\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\externals\joblib\memory.py in __call__(self, args, * kwargs)
281ํ
282 ํ์์คํฌํ=self.timestamp,
--> 283 ๋ฉํ๋ฐ์ดํฐ=self.metadata, mmap_mode=self.mmap_mode,
284ํ
285
C:\Users\centec7\AppData\Local\Continuum\Anaconda3\lib\site-packages\hdbscan\hdbscan_.py in _hdbscan_generic(X, min_samples, alpha, metric, p, leaf_size, gen_min_span_tree, **kwargs)
85๋ถ_์ํ, ์ํ)
86
---> 87 min_spanning_tree = mst_linkage_core(mutual_reachability_)
88
89 # mst_linkage_core๋ ์ ์ฒด ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ์ง ์์ต๋๋ค.
hdbscan._hdbscan_linkage.mst_linkage_core์ hdbscan/_hdbscan_linkage.pyx(hdbscan_hdbscan_linkage.c:2894)()
hdbscan/_hdbscan_linkage.pyx in hdbscan._hdbscan_linkage.mst_linkage_core(hdbscan_hdbscan_linkage.c:2281)()
NameError: 'np' ์ด๋ฆ์ด ์ ์๋์ง ์์์ต๋๋ค.
`
์ฃ์กํฉ๋๋ค. ์ฌ์ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ค์ ์ ๋ํด ์กฐ๊ธ ๋ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?
๋๋ ๋ํ ํ์ธํ๋ค - ๋๋ farfan92์ ๊ฐ์ ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ๊ฑฐ๋ฆฌ ํ๋ ฌ์ ์ฌ์ฉํ์ฌ ๋์ผํ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
์ฐ๋ถํฌ 17.10, ์๋์ฝ๋ค 5.0.1, ํ์ด์ฌ 3.6. ๋ด๊ฐ ์ฌ์ฉํ๋ venv์ ์ค์น๋ ํจํค์ง ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
/home/vladimir/anaconda3/envs/py36 ํ๊ฒฝ์ ํจํค์ง:
#
ํจํค์ง๋ฅผ ์
๋ฐ์ดํธํ๋ฉด NameError๊ฐ ์ ๊ฑฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. (ํนํ numpy ๋ฐ sklearn).
๋ค๋ฅธ ํจํค์ง๋ฅผ ์ค์นํ ํ ํธํ์ฑ ๋ฌธ์ ์์ ๊ฒ์
๋๋ค.
์ ์ด๋ ํ ๋ถ์ด ํด๊ฒฐํ์ จ๋ค๋ ๋คํ์ ๋๋ค. ํจํค์ง ์๋ก๊ณ ์นจ/์ ๋ฐ์ดํธ๊ฐ ๋ ๋ฒ ์๋ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์์งํ ์ฌ๊ธฐ์ ์ฝ๊ฐ ์ํด๋ฅผ ๋ด ๋๋ค.
ํจํค์ง ์ ๋ฐ์ดํธ์๋ ๋ถ๊ตฌํ๊ณ ์ฌ๊ธฐ์์ ์ ํํ ๋์ผํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค(์ค๋ช ์ 'get_metric'์๋ 'hdbscan.dist_metrics.DistanceMetric' ๊ฐ์ฒด๊ฐ ํ์ํ์ง๋ง 'str'์ ์์ ํจ).
์ต์ ๋ฒ์ ์ anaconda๋ฅผ ์คํํ๊ณ conda-forge๋ฅผ ํตํด HDBscan์ ์ค์นํ python 2.7์ด ์ค์น๋ Ubuntu ๊ฐ์ ๋จธ์ ๊ณผ python 3.6.4๊ฐ ์ค์น๋ Windows PC์์ ๋์ผํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค. ๋ด์ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ค์นํด ๋ด์ผ๊ฒ ๋ค์
๋ค, ์ฌ์ค ์๊ฐ์ด ์ข ๋จ์์ ํ ์คํธ๋ฅผ ํด๋ดค์ต๋๋ค. ๋์ผํ ์์คํ ์์ pip install hdbscan์ด ์ฆ์ ์๋ํ์ต๋๋ค(conda-forge ๋ฒ์ ์ ์ ๊ฑฐํ ํ). ๋ฒ์๋ฅผ ์ขํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํด ์์ ํ๋ ๋ฐ ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค.
๋๋ ๋ํ์ด ์ค๋ฅ๊ฐ ์์์ง๋ง conda-forge
์ค์น๋ ๋ฒ์ ์ hdbscan
์๋ง ์กด์ฌํ์ต๋๋ค. pip install
์ ๋ฒ์ hdbscan
. conda-forge
๋ฒ์ ์ ์ ๊ฑฐํ๊ณ ๋ด conda ํ๊ฒฝ์ ๋ํด pip install hdbsan
๋ฅผ ์คํํ์ผ๋ฉฐ hdbscan
์ํ์ ์ฐพ์์ต๋๋ค.
@linwoodc3 ์ข ์ด์ conda upgrade umap-learn
์ด ์ผ์ ํ์ ๊ฒ์
๋๊น? ์ด์จ๋ , ๋น์ ์ ์ง๊ธ ์๋ํ๋ ๋ฒ์ ์ ๊ฐ์ง๊ณ ์๊ณ ๊ทธ๊ฒ์ด ์ค์ํ ๊ฒ์
๋๋ค. ๋ณด๊ณ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ด๋๊ฐ์ ์ด์ ๊ฐ์ ์๋ชป๋ ๊ฒ์ด ์๋์ง ๊ณ์ ์ฃผ์ํ๊ฒ ์ต๋๋ค.
๋ฐฉ๊ธ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค(์ค๋ช ์ 'get_metric'์๋ 'hdbscan.dist_metrics.DistanceMetric' ๊ฐ์ฒด๊ฐ ํ์ํ์ง๋ง 'str'์ ๋ฐ์์ต๋๋ค). ์ด์ pip๋ฅผ ํตํด hdbscan์ ์ค์นํ์ต๋๋ค. ๊ฐ์ ธ ์ค๋ ค๊ณ ํ ๋ 'numpy.core.multiarray๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค'๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง ์ด์ ๋ ์์ต๋๋ค. ๊ทธ๋์ numpy.core.multiarray๋ฅผ ์๋์ผ๋ก ๊ฐ์ ธ์จ ๋ค์ hdbscan์ ๊ฐ์ ธ์ฌ ์ ์์์ต๋๋ค. ๊ด๋ จ๋ ๋ฌธ์ ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ sklearn.cluster.DBSCAN์ ๋ง๋ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ง์ถ๋ ค๋ ์๋๋ hdbscan์ผ๋ก ์๋ํ์ ๋ ์์ ์ค๋ฅ์ ํจ๊ป ์คํจํ์ต๋๋ค. ๋๋ ํ์ด์ฌ 2.7.13๊ณผ numpy 1.11.2๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. 'pip check'๋ ๊นจ์ง ์ข ์์ฑ์ ์ฐพ์ง ์์ต๋๋ค. ๋ค๋ฅธ ๋ฌด์์ ์๋ํ ์ ์์ต๋๊น? ํด๋ฌ์คํฐ์ ๊ฐ๋ณ ๋ฐ๋๊ฐ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก hdbscan์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. hdbscan์๋ numpy, Cython ๋ฑ์ ๋ชจ๋ ์ข ์ ๋ฒ์ ๊ณผ ํจ๊ป python 3.x๊ฐ ํ์ํฉ๋๊น?