๋ค์์ ํ๋กํ ๊ณผ ๊ด๋ จํ์ฌ ์ง๊ธ๊น์ง ์ํ๋ ์์ ์ ๋ํ ๊ฐ์์ ๋๋ค.
sklearn.plot
์ ๋ฒ์๋ฅผ ์ ์ดํ๋ โโ๋ฐ ๋์์ด ๋๋๋ก Figure ์์ค์ด ์๋ ์ถ ์์ค์์๋ง ํ๋กํ
ํ ๊ฒ์ ์ ์ํฉ๋๋ค. ์ฌ์ฉ์๋ ์ถ์ ํค์๋๋ก ์ ๋ฌํฉ๋๋ค. ํธ์์ axes
์ ๊ธฐ๋ณธ๊ฐ์ None
์
๋๋ค. ์ด ๊ฒฝ์ฐ์๋ง ํ๋กํ
๊ธฐ๋ฅ์ด ํ๋กํ
ํ ์ถ/๊ทธ๋ฆผ์ ์์ฑํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ด์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. gitter ์ ๋ฐ๋ผ @jnothman @amueller @GaelVaroquaux ์ ping์ ๋ณด๋ด์ญ์์ค.
๋๋ 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 ์ ๋ฐ๋ฅด๋ฉด gitter8425 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
๋ณด๋ค ๋ค์ฌ๋ค๋ฅํฉ๋๋ค.
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๋ฅผ ์ถ๊ฐํ๊ณ ์์ต๋๋ค.
๋๋จํด! ๊ฐ์ฌ ํด์.