Scikit-learn: sklearn.plot ๋ชจ๋“ˆ ์ถ”๊ฐ€

์— ๋งŒ๋“  2019๋…„ 03์›” 14์ผ  ยท  60์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: scikit-learn/scikit-learn

๋‹ค์Œ์€ ํ”Œ๋กœํŒ…๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ง€๊ธˆ๊นŒ์ง€ ์ˆ˜ํ–‰๋œ ์ž‘์—…์— ๋Œ€ํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค.

sklearn.plot ์˜ ๋ฒ”์œ„๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐ ๋„์›€์ด ๋˜๋„๋ก Figure ์ˆ˜์ค€์ด ์•„๋‹Œ ์ถ• ์ˆ˜์ค€์—์„œ๋งŒ ํ”Œ๋กœํŒ…ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ถ•์„ ํ‚ค์›Œ๋“œ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํŽธ์˜์ƒ axes ์˜ ๊ธฐ๋ณธ๊ฐ’์€ None ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋งŒ ํ”Œ๋กœํŒ… ๊ธฐ๋Šฅ์ด ํ”Œ๋กœํŒ…ํ•  ์ถ•/๊ทธ๋ฆผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

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

์ด ๋ฌธ์ œ๋ฅผ ์—ด์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. gitter ์— ๋”ฐ๋ผ @jnothman @amueller @GaelVaroquaux ์— ping์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.

8425๋Š” ๋ถ„๋ฅ˜๊ธฐ์˜ ๊ฒฐ์ • ์˜์—ญ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” plot_tree์™€ plot_partial_dependence๋ฅผ sklearn.plot์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  0.21์—์„œ #13335๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

sklearn.plot์˜ ๋ฒ”์œ„๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐ ๋„์›€์ด ๋˜๋„๋ก ๊ทธ๋ฆผ ์ˆ˜์ค€์ด ์•„๋‹Œ ์ถ• ์ˆ˜์ค€์—์„œ๋งŒ ํ”Œ๋กœํŒ…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ถ•์„ ํ‚ค์›Œ๋“œ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํŽธ์˜์ƒ ์ขŒํ‘œ์ถ•์˜ ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋งŒ ํ”Œ๋กœํŒ… ๊ธฐ๋Šฅ์ด ํ”Œ๋กœํŒ…ํ•  ์ถ•/๊ทธ๋ฆผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ƒ๊ฐ์ด์ง€๋งŒ ๊ธฐ์กด ํ•จ์ˆ˜(plot_tree ๋ฐ plot_partial_dependence)์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งž์ฃ ?

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ๋ฆผ์„ ์ถœ๋ ฅ/์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์ค‘ ์„œ๋ธŒํ”Œ๋กฏ(seaborn์˜ ํŒจ์‹ฏ ํ”Œ๋กฏ ๋“ฑ ์ฐธ์กฐ ๋ฐ
์˜ˆ์‹œ). ์ถ•์œผ๋กœ ์ œํ•œํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ์ œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

2019๋…„ 3์›” 15์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 2์‹œ 19๋ถ„ Hanmin Qin, [email protected] ์ž‘์„ฑ:

์ด ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. @jnothman์— ping
https://github.com/jnothman @amueller https://github.com/amueller
@GaelVaroquaux https://github.com/GaelVaroquaux ์— ๋”ฐ๋ฅด๋ฉด gitter

8425 https://github.com/scikit-learn/scikit-learn/issues/8425 ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค

๋ถ„๋ฅ˜๊ธฐ์˜ ๊ฒฐ์ • ์˜์—ญ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚˜๋Š” plot_tree์™€ plot_partial_dependence๋ฅผ sklearn.plot์œผ๋กœ ์˜ฎ๊ธฐ๊ณ 
ํ•ด๊ฒฐ #13335 https://github.com/scikit-learn/scikit-learn/issues/13335
0.21์—์„œ (๊ฒฐ์ • ๊ฒฝ๊ณ„๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ ๋„์ž…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ดˆ๋ณด์ž IMO์—๊ฒŒ๋Š” ์ค‘์š”ํ•˜๊ณ  ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

sklearn.plot์˜ ๋ฒ”์œ„๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐ ๋„์›€์ด ๋˜๋„๋ก ํ”Œ๋กœํŒ…๋งŒ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆผ ์ˆ˜์ค€์ด ์•„๋‹ˆ๋ผ ์ถ• ์ˆ˜์ค€์—์„œ. ์‚ฌ์šฉ์ž๋Š” ์ถ•์„ ์ „๋‹ฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ‚ค์›Œ๋“œ๋กœ. ํŽธ์˜์ƒ ์ขŒํ‘œ์ถ•์˜ ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ์ž…๋‹ˆ๋‹ค. ์—์„œ๋งŒ
์ด ๊ฒฝ์šฐ ํ”Œ๋กœํŒ… ๊ธฐ๋Šฅ์€ ํ”Œ๋กœํŒ…ํ•  ์ถ•/๊ทธ๋ฆผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ƒ๊ฐ์ด์ง€๋งŒ ๊ธฐ์กด ๊ธฐ๋Šฅ(plot_tree ๋ฐ
plot_partial_dependence), ๋งž์Šต๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scikit-learn/scikit-learn/issues/13448#issuecomment-472914237 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAEz6y4ZcL4WftNY92wCoz19vqtXL9Njks5vWmiCgaJpZM4b0Oiz
.

์ข‹์€ ์ƒ๊ฐ์ด์ง€๋งŒ ๊ธฐ์กด ํ•จ์ˆ˜(plot_tree ๋ฐ plot_partial_dependence)์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งž์ฃ ?

@qinhanmin2014 plot_tree ๋Š” ์ˆ˜์น˜๋ฅผ ์กฐ์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. plot_partial_dependence ๋Š” features ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ํ”Œ๋กฏ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ถ• ์ˆ˜์ค€ ํ”Œ๋กฏ์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” plot_partial_dependence ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ๋‹ค๋ฅธ ์ถ•(๋ฐ ๊ธฐ๋Šฅ)์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ถ•์œผ๋กœ ์ œํ•œํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ์ œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@jnothman Seaborn์—๋Š” "๊ทธ๋ฆผ ์ˆ˜์ค€" ํ”Œ๋กฏ๊ณผ "์ถ• ์ˆ˜์ค€" ํ”Œ๋กฏ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฌธ์„œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. scikit-learn์—์„œ ์ด ๋™์ž‘์„ ์ ์ ˆํ•˜๊ฒŒ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ "๊ทธ๋ฆผ ์ˆ˜์ค€" ํ”Œ๋กฏ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "ํ”ผ๊ทœ์–ด ์ˆ˜์ค€" ํ”Œ๋กฏ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ํฐ ์šฐ๋ ค๋Š” ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ๋” ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ ์ถ•์˜ ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ์ถ•๊ณผ ๊ฒน์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ค‘์ฒฉ์ด ๋œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋ฆผ์„ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ธก๋ฉด์—์„œ ์šฐ๋ฆฌ๋Š” seaborn ๋ฐฉ์‹์œผ๋กœ ์ง์ ‘ matplotlib ๊ฐœ์ฒด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ํ”ฝ์…€ ์ˆ˜์ค€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” yellowbrick ๋ฐฉ์‹์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” matplotlib ๊ฐ์ฒด ํ…Œ์ŠคํŠธ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด 2์„ผํŠธ:

  • ๊ณตํ†ต ์„œ๋ธŒํŒจํ‚ค์ง€ ๋˜๋Š” ๊ฐ ์„œ๋ธŒํŒจํ‚ค์ง€์˜ ๋ชจ๋“ˆ(sklearn.linear_models.plot, sklearn.ensemble.plot)์—์„œ matplotlib์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ +1.

  • @thomasjpfan์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ถ•์—๋งŒ ์•ก์„ธ์Šคํ•˜๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

    ๋˜ํ•œ ์˜ค๋ž˜ ์ „์— ์ƒํƒœ๊ณ„์—์„œ ๋‹ค๋ฅธ ํ”Œ๋กœํŒ… ๋ฐฑ์—”๋“œ์— ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด "์ถ•"๊ณผ ๊ฐ™์€ ๊ฐœ์ฒด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋””๋กœ ๊ฐ”๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ๊ตฌ๊ธ€๋ง์€ ๋งŽ์€ ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์€ ์‹ค์ œ๋กœ ์ด ์ œํ•œ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ plotly.tools.mpl_to_plotly์ด๋ฏ€๋กœ ๊ทธ ์ฃผ์žฅ์€ ํ—›๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๋ณด์ž์—๊ฒŒ ์ค‘์š”ํ•˜๊ณ  ์‰ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ์ • ๊ฒฝ๊ณ„๋ฅผ ํ”Œ๋กฏํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IMO

๋™์˜ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฐ์ • ๊ฒฝ๊ณ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์˜ˆ์ œ์˜ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์˜ ๋น ๋ฅธ ์ฒซ ๋ฒˆ์งธ ํ”Œ๋กฏ์„ ์›ํ•  ๊ฒฝ์šฐ ํ”Œ๋กฏ ๊ธฐ๋Šฅ์€ ํŠนํžˆ ๋‚˜๋ฌด ํ”Œ๋กฏ๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ํ”Œ๋กฏ์˜ ๊ฒฝ์šฐ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ํ•„์š”์— ๋”ฐ๋ผ ํ”Œ๋กฏ์„ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์„ ๋งค์šฐ ์ž์ฃผ ์ข‹์•„ํ•˜๋ฏ€๋กœ ๊ธฐ์กด ์˜ˆ์ œ์™€ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ์ด๋ฆ„๊ณผ ๊ด€๋ จํ•˜์—ฌ IMO inspect ๋Š” plot ๋ณด๋‹ค ๋‹ค์žฌ๋‹ค๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ผ์ข…์˜ ๊ฒ€์‚ฌ ๊ฐ€ ์•„๋‹Œ ํ”Œ๋กฏ์€ ์ƒ๊ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • #12599(๋ถ€๋ถ„ ์ข…์†์„ฑ)์€ ์ด๋ฏธ inspect ๋„์ž…

IMO ๊ฒ€์‚ฌ๋Š” ํ”Œ๋กฏ๋ณด๋‹ค ๋‹ค์žฌ๋‹ค๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ•๋ ฅํ•œ ์˜๊ฒฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‘ ์ด๋ฆ„ ๋ชจ๋‘์— +1์„ ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์ค„๊ฑฐ๋ฆฌ๊ฐ€ ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๊นŒ?

๋‹ค์‹œ 0.21 ์ด์ „์— ์ƒˆ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ณ  plot_tree ๋ฐ plot_partial_dependence๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” API์— ๋Œ€ํ•œ ํ•ฉ์˜์—๋„ ๋„๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ถ• ์ˆ˜์ค€/๊ทธ๋ฆผ ์ˆ˜์ค€).

inspect ์— ์ฐฌ์„ฑํ•˜๋Š” ๋‹ค๋ฅธ ์ :

์˜ต์…˜์œผ๋กœ ํ”Œ๋กœํŒ…์„ ์ œ๊ณตํ•˜๋Š” ๊ฒ€์‚ฌ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚˜๋ฌด์˜ ํŠน์„ฑ(๋…ธ๋“œ, ์žŽ, ๋ถ„ํ• ์  ๋“ฑ์˜ ์ˆ˜)์„ ์ธ์‡„ํ•˜๊ณ  ์„ ํƒ์ ์œผ๋กœ matplotlib๋กœ ํ”Œ๋กฏํ•ฉ๋‹ˆ๋‹ค.


์ œ์•ˆ๋œ ๋Œ€๋กœ ๊ทธ๋ฆผ ๋Œ€์‹  ์ถ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(ํ•œ์ˆจ, PDP๋ฅผ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•จ). ์šฐ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์กฐ๊ธˆ ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€๋งŒ ๋” ๋งŽ์€ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

IMO ๊ฒ€์‚ฌ๋Š” ํ”Œ๋กฏ๋ณด๋‹ค ๋‹ค์žฌ๋‹ค๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ•๋ ฅํ•œ ์˜๊ฒฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‘ ์ด๋ฆ„ ๋ชจ๋‘์— +1์„ ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์ค„๊ฑฐ๋ฆฌ๊ฐ€ ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๊นŒ?

"inspect"๋Š” Python์—์„œ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค(ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค). NS
๊ฐ™์€ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ 0.21 ์ด์ „์— ์ƒˆ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ณ  plot_tree ๋ฐ plot_partial_dependence๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” API์— ๋Œ€ํ•œ ํ•ฉ์˜์—๋„ ๋„๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ถ• ์ˆ˜์ค€/๊ทธ๋ฆผ ์ˆ˜์ค€).

์ด๊ฒƒ์€ 0.21์„ ์ง€์—ฐํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์กฐ๊ธฐ์— ์ถœ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์‹œ ์ผ์ฐ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค.

"inspect"๋Š” Python์—์„œ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค(ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค). NS
๊ฐ™์€ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

model_inspection ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ model_selection ์ด๋ฆ„๊ณผ ์ž˜ ์–ด์šธ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋ธ์ด ์•„๋‹Œ ๊ฒƒ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ธ์ฝ”๋”, ์ „์ฒ˜๋ฆฌ๊ธฐ, ๊ทธ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ...)

inspection ๊ทธ๋Ÿผ?

๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์ด ๋ชจ๋ธ์ด๊ธฐ๋„ ํ•ด์š” :)

๊ฐ ํ•˜์œ„ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๊ณต๊ฐœ ํ”Œ๋กฏ ํ•˜์œ„ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ Gael์˜ ์ œ์•ˆ์€ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณ ๋ คํ•˜๋ฉด.

FWIW, ๋‚˜๋Š” ๋˜ํ•œ plot inspect ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๊ฒƒ์„ ์ฐพ๋Š” ๊ฒƒ์ด ๋” ์ง๊ด€์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋ชจ๋ธ์„ _๊ฒ€์‚ฌ_ํ•˜๊ธฐ๋ณด๋‹ค ๋ชจ๋ธ์„ _ํ”Œ๋กœํŒ…_ํ•˜๋ ค๊ณ  ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋” ํฝ๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ IDE์—์„œ ๊ฐ€๋Šฅํ•œ ์ž๋™ ์™„์„ฑ ์˜ต์…˜์„ ๋ณผ ๋•Œ).

๊ฐ ํ•˜์œ„ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๊ณต๊ฐœ ํ”Œ๋กฏ ํ•˜์œ„ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ Gael์˜ ์ œ์•ˆ์€ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด plot_decision_boundary ๋Š” ์–ด๋””์— ๋„ฃ์–ด์•ผ ํ• ๊นŒ์š”?

# 12599 ์™€ ๊ด€๋ จํ•˜์—ฌ partial_dependence ๊ฐ€ ์ƒˆ ๋ชจ๋“ˆ์— ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€ ์˜์‹ฌ๋ฉ๋‹ˆ๋‹ค. (์ฆ‰, ensemble.partial_dependence + plot.plot_partial_dependence)

๊ทธ๋ ‡๋‹ค๋ฉด plot_decision_boundary๋ฅผ ์–ด๋””์— ๋„ฃ์„๊นŒ์š”?

sklearn.plot?

์ด ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์„ธ๊ฒŒ ๋ฐ€์–ด๋ถ™์ด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
"ํ”Œ๋กฏ"์ด ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋Š๋‚Œ.

# 12599 ์™€ ๊ด€๋ จํ•˜์—ฌ

๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. # 12599๋Š” deprecates ensemble.partial_dependence ์ฐฌ์„ฑ inspect.partial_dependence (๋ฌผ๋ก  inspect ์ด ๋…ผ์˜์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ ๋  ์ˆ˜๋Š”์žˆ๋‹ค). API๋Š” ๋˜ํ•œ ๋‘ ๊ตฌํ˜„ ๊ฐ„์— ๋‹ค๋ฆ…๋‹ˆ๋‹ค.


๋‚˜๋Š” plot ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ๊ฒ€์‚ฌ ๋ชจ๋“ˆ๊ณผ ์ž ์žฌ์ ์œผ๋กœ ๋†’์€ ์ค‘๋ณต ๊ฐ€๋Šฅ์„ฑ์ด ๊ฑฑ์ •๋˜์ง€๋งŒ ๋” ์ด์ƒ ํ‘ธ์‹œํ•˜์ง€๋Š” ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. :)

๊ฐ ํ•˜์œ„ ํŒจํ‚ค์ง€์˜ ๊ณต๊ฐœ ํ”Œ๋กฏ ํ•˜์œ„ ๋ชจ๋“ˆ์€ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ๊นŒ์ง€ ์ œ์•ˆ๋œ ๋ชจ๋“  ํ”Œ๋กœํŒ… ๋„๊ตฌ(PDP, ๋ณด์ •, ํ˜ผ๋™ ํ–‰๋ ฌ ๋ฐ ๊ฒฐ์ • ์˜์—ญ)๋Š” ๋‹จ์ผ ๋ชจ๋“ˆ์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. #12599๋Š” inspect.partial_dependence๋ฅผ ์œ„ํ•ด ensemble.partial_dependence๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  inspect๋Š” ์ด ๋…ผ์˜์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). API๋Š” ๋˜ํ•œ ๋‘ ๊ตฌํ˜„ ๊ฐ„์— ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น PR์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ inspect.partial_dependence + plot.plot_partial_dependence ?

์•„๋งˆ๋„ inspect.partial_dependence + plot.plot_partial_dependence?

๋‚˜๋Š” ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ๊ณผ ํ”Œ๋กœํŒ…ํ•˜๋Š” ๊ฒƒ์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.
๋ถ„๋ฆฌ์™€ ๊ฐ™์€ ๋ชจ๋ธ/๋ทฐ์ด๋ฉฐ,
์žฌ์‚ฌ์šฉ ์„ฑ.

Gaรซl์€ ์ด์ „์— sklearn.inspect.partial_dependence๋ฅผ ์ œ์•ˆํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ
sklearn.inspect.plot.plot_partial_dependence (๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋Œ€์ฒด
์ ์ ˆํ•œ ๊ฒฝ์šฐ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด)? ๋‚œ ์ƒ๊ด€์—†์–ด.

Gaรซl์€ ์ด์ „์— sklearn.inspect.partial_dependence ๋ฐ sklearn.inspect.plot.plot_partial_dependence๋ฅผ ์ œ์•ˆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ(์ ์ ˆํ•œ ๊ฒฝ์šฐ ๊ฒ€์‚ฌ๋ฅผ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋Œ€์ฒด)?

์˜ˆ, ํ•˜์ง€๋งŒ plot_decision_boundary ์–ด๋””์— ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ๋ฌผ์—ˆ๊ณ  ๋งˆ์Œ์ด ๋ฐ”๋€Œ์—ˆ๋‚˜์š”?

์ฐธ๊ณ ๋กœ ์œ„์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ PDP PR https://github.com/scikit-learn/scikit-learn/pull/12599๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

  • partial_dependence ์€(๋Š”) sklearn.model_inspection
  • plot_partial_dependence ์€(๋Š”) skearn.plot

๋ฌธ์„œ๋Š” https://53182-843222-gh.circle-artifacts.com/0/doc/_changed.html์— ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ์—๋Š” ํ˜„์žฌ plot ๋ชจ๋“ˆ๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์•ฝ ์กฐ๊ฑด/๋™์ž‘์ด plot_partial_dependence ์™€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— model_inspection.partial_dependence ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๋Š” ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ ์„น์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

(์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๊ฑฑ์ •ํ–ˆ๋˜ ์ข…๋ฅ˜์˜ ์ค‘์ฒฉ์ž…๋‹ˆ๋‹ค)

๋ฌผ๋ก  partial_dependence ์™€ plot_partial_dependence ๋Œ€ํ•ด ๋ณ„๋„์˜ ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์œ„์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ PDP PR #12599๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
partial_dependence๋Š” sklearn.model_inspection์— ์žˆ์Šต๋‹ˆ๋‹ค.
plot_partial_dependence๋Š” searn.plot์— ์žˆ์Šต๋‹ˆ๋‹ค.

+1

์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ์—๋Š” ํ˜„์žฌ ํ”Œ๋กฏ ๋ชจ๋“ˆ๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. model_inspection.partial_dependence์˜ ์ œ์•ฝ ์กฐ๊ฑด/๋™์ž‘์ด plot_partial_dependence์˜ ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— model_inspection.partial_dependence์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๋Š” ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ ์„น์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

+1

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” sklearn.plot์ด๋ผ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฃจํŠธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋„ฃ๋Š” ๊ฒƒ์„ ํ”ผํ–ˆ์„ ๋•Œ sklearn์—์„œ ์ข…์†์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” sklearn.plot์ด ์•ฝ๊ฐ„ ์ด์ƒํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

sklearn.model_inspection.plot ์„ ํ˜ธํ•˜๊ณ  ๊ฑฐ๊ธฐ์— plot_partial_dependence() ๋„ฃ์œผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

plot ๋ชจ๋“ˆ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์„ ํ˜ธํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์„ ํ˜ธํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

plot_decision_boundary ์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋„ฃ์„ ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํ•œ sklearn.XXX.plot +1 ํˆฌํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž ์ด ํ•„์š”ํ•œ๊ฐ€์š”? ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์ง„์ „์„ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

EDIT uh, ์กธ๋ ค์š”. Joel์˜ ๋Œ“๊ธ€์„ ์ฝ๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ž ์ด ํ•„์š”ํ•œ๊ฐ€์š”? ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์ง„์ „์„ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ์–ด๋Š ์†”๋ฃจ์…˜์ด๋“  ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค ( sklearn.plot / sklearn.XXX.plot ). IMO์˜ ์ฃผ์š” ๋ฌธ์ œ๋Š” sklearn.XXX.plot ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ plot_decision_boundary ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์–ด๋””์— ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ์•„๋ฌด๋„ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

sklearn.model_inspection.plot ?

sklearn.model_inspection.plot?

ํฅ๋ฏธ๋กœ์šด ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. +1์— ํˆฌํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ชจ๋“  ๊ฒƒ์„ sklearn.plot์— ๋˜์ง€๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(https://github.com/rasbt/mlxtend๋Š” ๋ชจ๋“  ํ”Œ๋กœํŒ… ๊ธฐ๋Šฅ์„ ๋‹จ์ผ ๋ชจ๋“ˆ์— ๋„ฃ์Šต๋‹ˆ๋‹ค).

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” from sklearn.XXX.plot import plot_XXX ์ง€์›ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? from sklearn.XXX import plot_XXX ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ€์ ธ์˜ค๊ธฐ์—์„œ .plot์˜ ๋ช…์‹œ์  ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ญ”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

sklearn.plot.XXX import plot_YYY์—์„œ ๋ฐ˜์ „๋œ ๊ฒƒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ์—์„œ .plot์˜ ๋ช…์‹œ์ ์ธ ์š”๊ตฌ ์‚ฌํ•ญ์€ ์—ฌ๊ธฐ์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ถ”๊ตฌํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” sklearn.XXX.plot ( sklearn.XXX.plot import plot_XXX ์—์„œ๋งŒ ์ง€์›)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•ฉ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

sklearn.plot.XXX import plot_YYY์—์„œ ๋ฐ˜์ „๋œ ๊ฒƒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

sklearn.plot.XXX import plot_YYY์—์„œ ๋ฐ˜์ „๋œ ๊ฒƒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.
sklearn.plot.model_inspection.plot_partial_dependence ๋Œ€์‹ 
sklearn.model_inspection.plot.plot_partial_dependence. ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
๋ชจ๋“  ์ด์ /๋ช…ํ™•์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.
sklearn.plot.model_inspection.plot_partial_dependence ๋Œ€์‹ 
sklearn.model_inspection.plot.plot_partial_dependence. ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
๋ชจ๋“  ์ด์ /๋ช…ํ™•์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ 3๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
(1) sklearn.plot.plot_YYY(์˜ˆ: sklearn.plot.plot_tree)
(2) sklearn.plot.XXX.plot_YYY(์˜ˆ: sklearn.plot.tree.plot_tree)
(3) sklearn.XXX.plot.plot_YYY(์˜ˆ: sklearn.tree.plot.plot_tree, sklearn.XXX์—์„œ plot_YYY ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Œ)
์ด ๋ชจ๋“  ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด +1์— ํˆฌํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” sklearn.tree.plot_tree๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก 0.21 ์ด์ „์— ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๋ฉด์ด ํ•„์š”ํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์˜๊ฒฌ์„ ์š”์ฒญํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ

์ž ์ด ํ•„์š”ํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์— ์˜๊ฒฌ์„ ์ดˆ๋Œ€ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1. ๊ทธ๊ฒƒ์€ SLEP์˜ ๊ธฐ์ค€์— ์†ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์—์„œ ๋งํ–ˆ๋“ฏ์ด, ์šฐ๋ฆฌ๋Š” "์ž‘์—…์ด ์ผ์–ด๋‚˜๋Š” ๊ณณ"์ด๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์–ด๋–จ ๊ฒƒ์ธ์ง€๋„ ์ •๋ง๋กœ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„ ์˜์กด์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์ด๋ฏธ ์ƒ๋‹นํžˆ ๋ถˆ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•ด์•ผ plot_partial_dependence ์— ์ „ํ™” partial_dependence ๋˜๋Š” ์ถœ๋ ฅ์„ ์–ป์„ partial_dependence ์ž…๋ ฅ ๋“ฑ์„? ์ด ์งˆ๋ฌธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ํ”Œ๋กฏ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์œ ํšจํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.
@NicolasHug ์™€ ๋…ผ์˜ํ•œ ์ฃผ์š” ๊ณ ๋ ค ์‚ฌํ•ญ์€ plot_X ํ˜ธ์ถœ compute_X ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ค„๊ฑฐ๋ฆฌ๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๊ณ  ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด compute_X ๋‹ค์‹œ ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ์ž ์žฌ์ ์œผ๋กœ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š”

  • ํ•ญ์ƒ compute_X ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋‹จ์ : ๋ถˆํŽธํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. Precision_recall_curve์—์„œ ์ •๋ฐ€๋„, ์žฌํ˜„์œจ ๋ฐ ์ž„๊ณ„๊ฐ’์˜ ์ˆœ์„œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ํ•ญ์ƒ compute_X ์ž…๋ ฅ์„ ๋ฐ›๊ณ  plot_X ์—์„œ compute_X ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ : ๋ชจ๋“  ํ”Œ๋กฏ์— ๋Œ€ํ•ด ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ทธ๋ž˜์„œ, ์–‘์ชฝ์„ ํ—ˆ์šฉ plot_X ๋ฐ›๋Š” ์ž…๋ ฅ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ทจํ•  ์ˆ˜ compute_X ๋ฐ ํ†ตํ™” compute_X ๋˜๋Š” ์ถœ๋ ฅ ์ทจํ•  compute_X ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ ์ƒ์„ฑ ๋œ ๊ฒฝ์šฐ. ์ด๋Š” ์„œ๋ช…์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋ฐ ๋ฌธ์„œํ™”๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ). ๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ plot_X ํ˜ธ์ถœํ•˜์—ฌ ๋‚ด๋ถ€์ ์œผ๋กœ compute_X ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ๋‹ค๋ฅธ ํ”Œ๋กฏ์„ ์›ํ•˜๋ฉด ๋‹ค์‹œ compute_X ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ plot_X ๋ฅผ ์ฒ˜์Œ ํ˜ธ์ถœ ํ•˜๊ธฐ ์ „์— ๋‘˜ ์ด์ƒ์˜ ํ”Œ๋กฏ์„ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜ˆ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” plot_X ํ˜ธ์ถœํ•  ๋•Œ compute_X ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋…ธ์ถœํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ์—†์ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • compute_X๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋น„์‹ผ์ง€์— ๋”ฐ๋ผ ๊ฒฐ์ •์„ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค. ํ˜ผ๋™ ํ–‰๋ ฌ ๋ฐ ๋ถ€๋ถ„ ์˜์กด๋„ ๋ฐ ๋ณด์ • ํ”Œ๋กฏ์˜ ๊ฒฝ์šฐ ์žฌ๊ณ„์‚ฐ ๋น„์šฉ์— ๋Œ€ํ•ด์„œ๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์ง€๋งŒ ๋ถ€๋ถ„ ์˜์กด๋„ ํ”Œ๋กฏ์˜ ๊ฒฝ์šฐ์—๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ : ์ผ๊ด€์„ฑ ์—†๋Š” ์ธํ„ฐํŽ˜์ด์Šค.

@NicolasHug ์™€ ๋…ผ์˜ํ•œ ์ฃผ์š” ๊ณ ๋ ค ์‚ฌํ•ญ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ํ”Œ๋กฏํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ํ•œ plot_X์—์„œ compute_X๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”Œ๋กฏ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๊ณ  ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋‹ค์‹œ compute_X๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ์ž ์žฌ์ ์œผ๋กœ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค.

+1000. ์—ฐ๊ตฌ ์ฝ”๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋””์ž์ธ ๋ฌธ์ œ๋ถ€ํ„ฐ MVC ๋ถ„๋ฆฌ(์•ฝ๊ฐ„ ํ˜„ํ•™์ ,
์ฃ„์†ก ํ•ด์š”).

๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์—์„œ
์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์ ํ•ฉ ๋ชจ๋ธ? ์˜ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ์ถ”๊ฐ€๋กœ
๋ฌธ์ œ.

์žฅ์ฐฉ๋œ ๋ชจ๋ธ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ข…์ข… ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ํ”ผํŒ…๋œ ๋ชจ๋ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ๊ฐœ์ฒด๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ partial_dependence ๋Š” PartialDependence ๊ฐœ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๋ฌด๋ฆฌ. ๊ทธ๋Ÿฌ๋‚˜ ์ถ”์ •๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ค, ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์ง€๊ธˆ ๊บผ๋‚ด๋Š” ์ด์œ : ์ด ๊ฒฐ์ • ์—†์ด๋Š” ์‚ฌ์šฉ์ž ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฅด๊ณ , ์˜ˆ์ œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์—์„œ ์ด๋ฆ„ ์ง€์ •/API ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ;)

๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๊ฝค ๋น„ ํ•™์Šต๊ณผ ๋น„์Šทํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ„์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. plot ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ;)

์ข…์ข… ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ํ”ผํŒ…๋œ ๋ชจ๋ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ partial_dependence๊ฐ€ PartialDependence ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋ฌด๋ฆฌ. ๊ทธ๋Ÿฌ๋‚˜ ์ถ”์ •๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์š”์ ์„ ์•Œ์•˜์–ด.

ํ•œ ๊ฐ€์ง€ ์˜ต์…˜(๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹˜)์€ ๋ชจ๋“ 
๊ณ„์‚ฐ ํ•จ์ˆ˜๋Š” ๋ช…๋ช…๋œ ํŠœํ”Œ๊ณผ ๋ชจ๋“  ํ•ด๋‹น ๊ณ„์‚ฐ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ•จ์ˆ˜๋Š” ์ด๊ฒƒ์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. ํ˜„๋Œ€์™€ ์–ด๋Š ์ •๋„ ์ผ์น˜ํ•  ๊ฒƒ์ด๋‹ค.
Python ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์˜ˆ์ œ๋ฅผ ์ ์„ ์ˆ˜ ์—†์ด ๋ช…๋ช…/API ๊ฒฐ์ •์„ ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ;)

๋‚˜๋Š” ๋‹น์‹ ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ณ„์‚ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค๋ฉด ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ”Œ๋กœํŒ… ํ•จ์ˆ˜๋Š” ์ด ๊ฐ์ฒด๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? +1์— ํˆฌํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•ด ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. :)

@GaelVaroquaux ์ œ์•ˆ์˜ ์ด์ ์€ ํŠœํ”Œ ์••์ถ• ํ•ด์ œ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ confusion_matrix ์™€ ๊ฐ™์ด ๋‹จ์ผ ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠœํ”Œ์ด ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•ฝ๊ฐ„ ์ผ๊ด€์„ฑ์ด ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@qinhanmin2014 ์ž„์˜์˜ ๊ฐœ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ํ”Œ๋กœํŒ… ๋„์šฐ๋ฏธ๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ์œ ํ˜•์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€

ํ•œ ๊ฐ€์ง€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์—ˆ๊ณ  ๋‘ ๋ฒˆ์งธ ๋” ๋‚˜์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
1) ๊ธฐ์กด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”Œ๋กฏ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ๊ฐ์ฒด ์ง€ํ–ฅ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

cm = ConfusionMatrix(y, y_pred)
cm.plot()

๊ทธ๋ ‡๊ฒŒํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€๋งŒ ์ผ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ณต์ œ๋˜๊ณ  ์•ฝ๊ฐ„ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋™์ผํ•œ ์›๋ฆฌ๊ฐ€ ๋” ์ง๊ด€์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2) plot_ ํ•จ์ˆ˜๊ฐ€ ํ•ญ์ƒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ”Œ๋กฏํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•ฉ๋‹ˆ๋‹ค.

plot_confusion_matrix(y, y_pred)

๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ณ  plot ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ConfusionMatrixPlotter ๊ฐœ์ฒด๋ฅผ ํ”Œ๋กฏํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ๋งŒ ํ”Œ๋กœํŒ…ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ผ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด ๊ฐœ์ฒด์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ”Œ๋กฏํ•˜๋ ค๋ฉด ๊ฐœ์ฒด์— ๋Œ€ํ•ด plot ๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•œ ๋‹ค์Œ ํ”Œ๋กฏํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ConfusionMatrixPlotter ์ง์ ‘ ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋” ๋ณต์žกํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํด๋ž˜์Šค๋ฅผ ๋…ธ์ถœํ•˜์ง€๋งŒ ๋ชจ๋“  ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ข‹์€ ๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ฉ๋ฆฌ์ ์ธ ์ ˆ์ถฉ์•ˆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ”Œ๋กฏ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ConfusionMatrixPlotter ๊ฐœ์ฒด๋ฅผ ํ”Œ๋กฏํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ํ”Œ๋กฏํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? @amueller ํ˜•์‹์„ ์กฐ์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@qinhanmin2014 ์˜ˆ, ๊ธ€๊ผด์„ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค๊ณ , ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ , ๊ฐ™์€ ํ”Œ๋กฏ์—์„œ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ํ•จ๊ป˜ ํ”Œ๋กฏํ•˜๊ณ , ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๊ณ , ...

@qinhanmin2014 ์˜ˆ, ๊ธ€๊ผด์„ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค๊ณ , ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ , ๊ฐ™์€ ํ”Œ๋กฏ์—์„œ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ํ•จ๊ป˜ ํ”Œ๋กฏํ•˜๊ณ , ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๊ณ , ...

์—ฌ๊ธฐ์—์„œ ์ด๋Ÿฌํ•œ ํ˜•์‹ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ž‘์€ ๋ถ€๋ถ„์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  @amueller ์šฐ๋ฆฌ๋Š” ์ถ• ์ „๋‹ฌ์„ ์ง€์›ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ํ”Œ๋กœํŒ… ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•œ ํ›„ ํ”Œ๋กฏ์„ ์‰ฝ๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@qinhanmin2014 ์•„๋‹ˆ์š”, ๋งŽ์€ ๊ฒƒ๋“ค์ด ๋‚˜์ค‘์— ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋ชจ๋“  ํ˜•์‹์— ๋Œ€ํ•ด ์Šค์Šค๋กœ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”Œ๋กฏ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”Œ๋กฏ์„ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์„œ๋ธŒ์ƒ˜ํ”Œ๋งํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„ ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋งˆ์Œ์ด ๋ฐ”๋€Œ๋”๋ผ๋„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์ ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํƒ์ƒ‰์  ๋ถ„์„์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ •ํ™•ํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์‹œ๊ฐํ™”๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@qinhanmin2014 ์•„๋‹ˆ์š”, ๋งŽ์€ ๊ฒƒ๋“ค์ด ๋‚˜์ค‘์— ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋ชจ๋“  ํ˜•์‹์— ๋Œ€ํ•ด ์Šค์Šค๋กœ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”Œ๋กฏ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”Œ๋กฏ์„ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์„œ๋ธŒ์ƒ˜ํ”Œ๋งํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„ ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋งˆ์Œ์ด ๋ฐ”๋€Œ๋”๋ผ๋„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ฃผ์š” ๋ฌธ์ œ๋Š” ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋ช…ํ™•ํ•œ ๋ฐฉ๋ฒ•์ด ์—†๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ํ”Œ๋กœํŒ… ๊ธฐ๋Šฅ์— ๋งŽ์€ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ์กฐ๊ธˆ ๋” ๊ทผ๊ฑฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ, ๋‚˜๋Š”
์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ ธ์˜ค๊ธฐ์— ํ”Œ๋กฏ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ „ํ˜€ ๊ฒฝ๋กœ. ๊ฒฐ๊ตญ, ์šฐ๋ฆฌ๋Š” plot_์„ ์ ‘๋‘์‚ฌ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ. ๋ฌธ์ œ๋Š” plot_tree ๊ด€๋ จ : ์™œํ•ด์•ผ
๋‹ค๋ฅธ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐ ํ…์ŠคํŠธ ์‹œ๊ฐํ™” ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

@qinhanmin2014 "์•„์ง ์ข‹์€ API๊ฐ€ ์—†๋‹ค"๋Š” ๊ฒƒ์ด ์ข‹์€ ์ด์œ ๋Š” ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ถ„ ์˜์กด์„ฑ, ์ˆœ์—ด ์ค‘์š”๋„, ํ•™์Šต ๊ณก์„ , ๊ฒ€์ฆ ๊ณก์„  ๋ฐ GridSearchCV ๋ฐ RandomizedSearchCV์˜ ๊ฒฐ๊ณผ๋Š” ๋ชจ๋‘ ๋งŽ์€ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•œ ์ผ๋ฐ˜์ ์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค. gridsearchcv ๋ฐ randomizedsearchcv์˜ ๊ฒฝ์šฐ ๋ช…๋ฐฑํ•œ ๊ฒƒ์€ ๊ฐœ์ฒด ๋˜๋Š” cv_results_ ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ํ”Œ๋กœํŒ… ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์˜๋ฏธํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•™์Šต ๊ณก์„ ๊ณผ ๊ฒ€์ฆ ๊ณก์„  tbh์— ๋Œ€ํ•ด ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

@jnothman ๋‚ด ์ƒ๊ฐ์— @GaelVaroquaux ๋Š” matplotlib ์ข…์†์„ฑ์„ ๋ชจ๋“ˆ์— ๊ตญํ•œ ์˜€์Šต๋‹ˆ๊นŒ ? ๋‚˜๋Š” ์•„์ง ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋งค์šฐ ์ผ๊ด€๋œ ์ƒ๊ฐ์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ถ„ ์˜์กด์„ฑ, ์ˆœ์—ด ์ค‘์š”๋„, ํ•™์Šต ๊ณก์„ , ๊ฒ€์ฆ ๊ณก์„  ๋ฐ GridSearchCV ๋ฐ RandomizedSearchCV์˜ ๊ฒฐ๊ณผ๋Š” ๋ชจ๋‘ ๋งŽ์€ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•œ ์ผ๋ฐ˜์ ์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๊ณ ๋งˆ์›Œ, ์ด์ œ ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค :)
์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ  ํ”Œ๋กฏํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์™œ ์ค‘์š”ํ•œ์ง€ ์—ฌ์ „ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด +1์— ํˆฌํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ์กฐ๊ธˆ ๋” ๊ทผ๊ฑฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ, ๋‚˜๋Š”
์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ ธ์˜ค๊ธฐ์— ํ”Œ๋กฏ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ „ํ˜€ ๊ฒฝ๋กœ. ๊ฒฐ๊ตญ, ์šฐ๋ฆฌ๋Š” plot_์„ ์ ‘๋‘์‚ฌ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ. ๋ฌธ์ œ๋Š” plot_tree ๊ด€๋ จ : ์™œํ•ด์•ผ
๋‹ค๋ฅธ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐ ํ…์ŠคํŠธ ์‹œ๊ฐํ™” ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค ์ด๊ฒƒ๋„ ์˜ต์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด plot_ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์—๋Š” matplotlib๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์˜ ๋˜ ๋‹ค๋ฅธ ์žฅ์ ์€ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ์ด๋™ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋…ผ์˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ sklearn.plot ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜๊ณ  matplotlib ์š”๊ตฌ ์‚ฌํ•ญ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด plot_ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด https://github.com/scikit-learn/scikit-learn/pull/12599 ์—์„œ partial_dependence ๋ฐ plot_partial_dependence ๋Š” inspection ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ๋‹ค์Œ ๋‚ ์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด์— ๋™์˜ํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋‚˜๋Š” PDP PR์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ :

  • partial_dependence ์™€ plot_partial_dependence ๋ฅผ ๋ชจ๋‘ sklearn.inspection ๋„ฃ์Šต๋‹ˆ๋‹ค.
  • plot_partial_dependence ๋Š” fig ๋ฐ ax ๊ฐœ์ฒด๋ฅผ ์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(์ง€๊ธˆ์€ ํŠœํ”Œ๋กœ ๋ฐ˜ํ™˜). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด https://github.com/scikit-learn/scikit-learn/issues/13448#issuecomment -479512520์—์„œ ๋‘ ๋ฒˆ์งธ ์˜ต์…˜์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ด ๋‘ ๊ธฐ๋Šฅ์„ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ตœ์ข… ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
@jnothman , @NicolasHug ๋ฐ ๋‚˜(๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์‚ฌ๊ณผํ•œ๋‹ค)๊ฐ€ ๋™์˜ํ•œ ์ œ์•ˆ: sklearn.XXX.plot_YYY(sklearn.XXX import plot_YYY์˜ ์ง€์›). plot_์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์—๋Š” matplotlib๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ด ์ œ์•ˆ์˜ ์ฃผ์š” ์ด์ ์€ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ์ด๋™ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ์œ„์— ์ž ๋“ค๋ฉด ์„ค๋ช…ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ๊ฐ„๋‹จํ•˜๊ณ  ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๊ฐ„์— ๊ณต์œ  ํ”Œ๋กœํŒ… API๋ฅผ ์ƒ๊ฐํ•˜๋Š” ์–ด๋ ค์›€์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ๊ทธ๋ ‡๊ฒŒ ํ•ฉ์‹œ๋‹ค. ๋” ๋„์›€์ด ๋˜๋Š” ๋„์šฐ๋ฏธ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ์„ธ์š”.
๊ฐ€์ ธ์˜ค๊ธฐ ์˜ค๋ฅ˜

์ฐธ๊ณ ๋กœ ์ €๋Š” #12599์— sklearn.utils.check_matplotlib_support ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

def check_matplotlib_support(caller_name):
    try:
        import matplotlib
    except ImportError as e:
        raise ImportError(
            "{} requires matplotlib. You can install matplotlib with "
            "`pip install matplotlib`".format(caller_name)
        ) from e

์ฐธ๊ณ ๋กœ #12599์— sklearn.utils.check_matplotlib_support๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋‹จํ•ด! ๊ฐ์‚ฌ ํ•ด์š”.

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