Hdbscan: ๊ธฐ๋ณธ ์„ค์ •์˜ dist_metrics ์˜ค๋ฅ˜

์— ๋งŒ๋“  2017๋…„ 11์›” 16์ผ  ยท  14์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: scikit-learn-contrib/hdbscan

๋‹ค์Œ์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ์ƒ์„ฑ

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' ๋“ฑ์˜ ์ธ์ˆ˜๋กœ ๋‹ค๋ฅธ ๋ฉ”ํŠธ๋ฆญ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  14 ๋Œ“๊ธ€

์•„๋งˆ๋„ ์ถ”๊ฐ€๋กœ ์ธํ•œ ์ฝ”๋“œ ์–ด๋”˜๊ฐ€์˜ arg ์ˆœ์„œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•ฝ๊ฐ„ ๋‹นํ™ฉ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋‚˜์ค‘์— ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, ์˜ค๋Š˜ ์‹œ๊ฐ„์ด ๋ถ€์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ์กฐ๊ธˆ ์žˆ๋‹ค๊ฐ€ ํ•ด๋ด์•ผ๊ฒ ๋„ค์š”. ์ง€์—ฐ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋˜ํ•œ "TypeError: ์„ค๋ช…์ž 'get_metric'์„ ์–ป์œผ๋ ค๋ฉด 'hdbscan.dist_metrics.DistanceMetric' ๊ฐœ์ฒด๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ๋ฌธ์„œ์—์„œ ๊ฐ„๋‹จํ•œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ 'str''์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

RobustSingleLinkage์—์„œ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

get_metric ๋ฉ”์„œ๋“œ๊ฐ€ ์˜ˆ์ƒํ•œ ๊ฐ์ฒด ๋Œ€์‹  'euclidean' ๋˜๋Š” 'manhattan' ๋“ฑ์˜ ๋ฌธ์ž์—ด์„ ๋ฐ›๋Š” ๊ฒƒ์„ ํ”ผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋œ ๊ฑฐ๋ฆฌ ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์Œ์„ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

`ํด๋Ÿฌ์Šคํ„ฐ = hdbscan.HDBSCAN(min_cluster_size=5, min_samples=์—†์Œ, ๋ฉ”ํŠธ๋ฆญ='๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋จ').fit(gower_df)

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 ํ™˜๊ฒฝ์˜ ํŒจํ‚ค์ง€:
#

  • asn1crypto 0.22.0 py36h265ca7c_1
  • ํ‘œ๋ฐฑ์ œ 2.0.0 py36h688b259_0
  • ca-์ธ์ฆ์„œ 2017.08.26 h1d4fec5_0
  • ์ธ์ฆ์„œ 2017.7.27.1 py36h8b7b77e_0
  • cffi 1.10.0 py36had8d393_1
  • ์ƒค๋ฅด๋ฐ 3.0.4 py36h0f667ec_1
  • ์ƒค๋ฅด๋ฐ 3.0.4
  • ํด๋ฆญ 6.7
  • ํด๋ฆญํด๋ฆญ 1.2.2
  • ์—ฐ๊ฒฐ 1.1.16
  • ์•”ํ˜ธํ™” 2.0.3 py36ha225213_1
  • ์‚ฌ์ดํด๋Ÿฌ 0.10.0 py36h93f1223_0
  • ์‚ฌ์ด์ฌ 0.26.1 py36h21c49d0_0
  • dbus 1.10.22 h3b5a359_0
  • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ 4.1.2 py36hd076ac8_0
  • ์ง„์ž…์  0.2.3 py36h1aec115_2
  • ๊ตญ์™ธ ๊ฑฐ์ฃผ์ž 2.2.4 h6ea4f2b_2
  • ๋น ๋ฅธ dtw 0.3.2
  • ํ”Œ๋ผ์Šคํฌ 0.12.2
  • fontconfig 2.12.4 h88586e7_1
  • ์ž์œ ํ˜• 2.8 h52ed37b_0
  • ๊ธ€๋ฆฝ 2.53.6 h5d9569c_2
  • gmp 6.1.2 hb3b607b_0
  • gst-ํ”Œ๋Ÿฌ๊ทธ์ธ-๋ฒ ์ด์Šค 1.12.2 he3457e5_0
  • ์ง€์ŠคํŠธ๋ฆฌ๋จธ 1.12.2 h4f93127_0
  • h5py 2.7.0 py36he81ebca_1
  • hdbscan 0.8.11 py36_0 ์ฝ˜๋‹ค ํฌ์ง€
  • hdf5 1.10.1 hb0523eb_0
  • html5lib 0.999999999 py36h2cfc398_0
  • icu 58.2 h211956c_0
  • ์•„์ด๋””๋‚˜ 2.6 py36h82fb2a8_1
  • ์•„์ด๋””๋‚˜ 2.6
  • ๊ตด์ ˆ 0.3.1
  • ์ธํ…”-openmp 2018.0.0 h15fc484_7
  • ์•„์ดํ”ผ์ปค๋„ 4.6.1 py36hbf841aa_0
  • ์•„์ดํŒŒ์ด์ฌ 6.1.0 py36hc72a948_1
  • ipython_genutils 0.2.0 py36hb52b0d5_0
  • ์•„์ดํ”ผ์œ„์ ฏ 7.0.0 py36h7b55c3a_0
  • ์œ„ํ—˜ํ•œ 0.24
  • ์ œ๋‹ค์ด 0.10.2 py36h552def0_0
  • ์ง„์ž2 2.9.6 py36h489bce4_1
  • jpeg 9b h024ee3a_2
  • jsonschema 2.6.0 py36h006f8b5_0
  • ์ฃผํ”ผํ„ฐ 1.0.0 py36h9896ce5_0
  • jupyter_client 5.1.0 py36h614e9ea_0
  • jupyter_console 5.2.0 py36he59e554_1
  • jupyter_core 4.3.0 py36h357a921_0
  • ์ผ€๋ผ์Šค 2.0.8 py36hc0b6f7c_0
  • libedit 3.1 heed3624_0
  • libffi 3.2.1 hd88cf55_4
  • libgcc 7.2.0 h69d50b8_2
  • libgcc-ng 7.2.0 h7cc24e2_2
  • libgfortran 3.0.0 1
  • libgfortran-ng 7.2.0 h9f7466a_2
  • libgpuarray 0.6.9 0
  • libiconv 1.15 h63c8f33_5
  • libpng 1.6.32 hda9c8bc_2
  • libprotobuf 3.4.0 0
  • libsodium 1.0.13 h31c71d8_2
  • libstdcxx-ng 7.2.0 h7a57d05_2
  • libxcb 1.12 h84ff03f_3
  • libxml2 2.9.4 h6b072ca_5
  • ๋งˆ์ฝ” 1.0.7 py36h0727276_0
  • ๋งˆํฌ์—…์„ธ์ดํ”„ 1.0 py36hd9260cd_1
  • ๋งคํŠธํ”Œ๋กฏ๋ฆฝ 2.1.0 py36hba5de38_0
  • ๋ฏธ์ŠคํŠ  0.8.1 py36h3d5977c_0
  • mkl 2018.0.0 hb491cac_4
  • mkl ์„œ๋น„์Šค 1.1.2 py36h17a0993_4
  • nbconvert 5.3.1 py36hb41ffb7_0
  • nbformat 4.4.0 py36h31c9010_0
  • ncurses 6.0 h9df7e31_2
  • networkx 2.0 py36h7e96fb8_0
  • ์ฝ” 1.3.7 py36hcdf7029_2
  • ๋…ธํŠธ๋ถ 5.2.1 py36h690a4eb_0
  • numpy 1.13.3
  • numpy 1.12.1 py36he24570b_1
  • openssl 1.0.2m h8cfc7e7_0
  • ํŒฌ๋” 0.21.0 py36h78bd809_1
  • ํŒ๋… 1.19.2.1 hea2e7c5_1
  • ํŒ๋… ํ•„ํ„ฐ 1.4.2 py36ha6701b7_1
  • path.py 10.3.1 py36he0c6f6d_0
  • ๊ฒฝ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 1.0.1
  • ํŒป์‹œ 0.4.1 py36ha3be15e_0
  • pcre 8.41 hc71a17e_0
  • pexpect 4.2.1 py36h3b9d41b_0
  • ํ”ผํด์‰์–ด 0.7.4 py36h63277f8_0
  • ํ• 9.0.1 py36h6c6f9ce_4
  • ์Œ๋ชจ 2.1.0 py36h56a57e5_0
  • prompt_toolkit 1.0.15 py36h17d85b1_0
  • ํ”„๋กœํ† ๋ฒ„ํ”„ 3.4.0 py36_0
  • ptyprocess 0.5.2 py36h69acd42_0
  • ํŒŒ์ดํŒŒ์„œ 2.18 py36hf9f622e_1
  • ํ”ผ๊ทธ๋จผํŠธ 2.2.0 py36h0d3125c_0
  • ํ”ผ๊ทธํ‘ธ 0.6.9 py36_0
  • pyopenssl 17.2.0 py36h5cc804b_0
  • ํŒŒ์ดํŒŒ์‹ฑ 2.2.0 py36hee85983_1
  • pyqt 5.6.0 py36h0386399_5
  • ํŒŒ์ด์‚ญ์Šค 1.6.7 py36hd97a5b1_1
  • ํŒŒ์ด์ฌ 3.6.3 h1284df2_4
  • ํŒŒ์ด์ฌ-dateutil 2.6.1 py36h88d3b88_1
  • ํ”ผ์ธ  2017.2 py36hc2ccc2a_1
  • pyyaml โ€‹โ€‹3.12 py36hafb9ca4_1
  • pyzmq 16.0.2 py36h3b0cf96_2
  • qt 5.6.2 h974d657_12
  • ํํ‹ฐ์ฝ˜์†” 4.3.1 py36h8f73b5b_0
  • ์ฝ๊ธฐ ๋ผ์ธ 7.0 ha6073c6_4
  • ์š”์ฒญ 2.18.4 py36he2e5f8d_1
  • ์š”์ฒญ 2.18.4
  • ์‚ฌ์ดํ‚ท๋Ÿฐ 0.19.1 py36h7aa7ec6_0
  • ์‚ฌ์ดํ”ผ 1.0.0 py36hbf646e7_0
  • ์‚ฌ์ดํ”ผ 1.0.0
  • ์‹œ๋ณธ 0.8.0 py36h197244f_0
  • ๊ณ„์ ˆ 0.3.1
  • ์„ค์ • ๋„๊ตฌ 36.5.0 py36he42e2e1_0
  • ๋‹จ์ˆœ ์ผ๋ฐ˜ 0.8.1 py36h2cb9092_0
  • ๋ชจ๊ธˆ 4.18.1 py36h51ed4ed_2
  • ์—ฌ์„ฏ 1.11.0 py36h372c433_1
  • sqlite 3.20.1 hb898158_2
  • ํ†ต๊ณ„ ๋ชจ๋ธ 0.8.0 py36h8533d0b_0
  • swagger-spec-validator 2.1.0
  • ํ…์„œํ”Œ๋กœ 1.1.0 np112py36_0
  • ํ„ฐ๋ฏธ๋„ 0.6 py36ha25a19f_0
  • ํ…Œ์ŠคํŠธ ๊ฒฝ๋กœ 0.3.1 py36h8cadb63_0
  • ํ…Œ์•„๋…ธ 0.9.0 py36_0
  • tk 8.6.7 hc745277_3
  • ํ† ๋„ค์ด๋„ 4.5.2 py36h1283b2a_0
  • ํ˜•์งˆ 4.3.2 py36h674d592_0
  • tslearn 0.1.7.2
  • ํƒ€์ž 3.6.2
  • urllib3 1.22
  • urllib3 1.22 py36hbe7ace6_0
  • ํ™”์žฅ์‹ค ํญ 0.1.7 py36hdf4376a_0
  • ์›น ์ธ์ฝ”๋”ฉ 0.5.1 py36h800622e_1
  • Werkzeug 0.12.2 py36hc703753_0
  • ํœ  0.29.0 py36he7f4e38_1
  • ์œ„์ ฏnbextension 3.0.2 py36hd01bb71_1
  • xz 5.2.3 h55aa19d_2
  • yaml 0.1.7 h014fa73_2
  • ์ œ๋กœ์— ํ 4.2.2 hbedb6e5_2
  • zlib 1.2.11 ha838bed_2

ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด 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๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰