Scikit-learn: CategoricalEncoder API๋ฅผ ์žฌ๊ณ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2018๋…„ 01์›” 23์ผ  ยท  63์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: scikit-learn/scikit-learn

์—ฌ๊ธฐ์—์„œ ์ง„ํ–‰ ์ค‘์ธ ๋ช‡ ๊ฐ€์ง€ ํ† ๋ก ๊ณผ ๊ณต๊ฐœ๋œ ๋ฌธ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ CategoricalEncoder (https://github.com/scikit-learn/scikit-learn/pull/9151)์ด ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„ ์„ ํƒ(์•„์ง ์ถœ์‹œ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค).

ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํด๋ž˜์Šค ์ด๋ฆ„ CategoricalEncoder ๋Š” ํ—ˆ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค(๋ฒ”์ฃผ ๋ฐ์ดํ„ฐ).
  • ํ‚ค์›Œ๋“œ ์ธ์ˆ˜ encoding ๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์„ ์ง€์ •

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ encoding='onehot'|'onehot-dense'|'ordinal' ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

  • ๋” ๋งŽ์€ ์ธ์ฝ”๋”ฉ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ด์ง„ ์ธ์ฝ”๋”ฉ, ํ‰๊ท  ๋Œ€์ƒ ์ธ์ฝ”๋”ฉ, ๋‹จํ•ญ ์ธ์ฝ”๋”ฉ, ...). ํ•˜๋‚˜์˜ ํฐ CategoricalEncoder ํด๋ž˜์Šค์—์„œ encoding kwarg์— ๋Œ€ํ•œ ์ƒˆ ๊ฐ’์œผ๋กœ ๊ณ„์† ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๊นŒ?
  • ์ธ์ฝ”๋”ฉ ์ค‘ ํ•˜๋‚˜์— ํŠน์ •ํ•œ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ฒซ ๋ฒˆ์งธ(์ค‘๋ณต) ์—ด์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ 'onehot' ์ธ์ฝ”๋”ฉ์˜ ๊ฒฝ์šฐ ๋˜๋Š” ๋นˆ๋„์— ๋Œ€ํ•œ ๋ฒ”์ฃผ์˜ ์ˆœ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” 'ordinal' ์ธ์ฝ”๋”ฉ์˜ ๊ฒฝ์šฐ ...). ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” encoding kwarg์— ๋Œ€ํ•ด ์ „๋‹ฌํ•œ ๋‚ด์šฉ์— ๋”ฐ๋ผ ํ™œ์„ฑํ™”๋˜๊ฑฐ๋‚˜ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ์ถ”๊ฐ€ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜๋ฅผ CategoricalEncoder ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์žฅ ๋ฉ‹์ง„ API ๋””์ž์ธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ sparse=True/False ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์ด๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ 'onehot'์—๋งŒ ๊ด€๋ จ๋˜๊ณ  'ordinal'์—๋Š” ๊ด€๋ จ์ด ์—†์—ˆ์œผ๋ฉฐ 'onehot'๊ณผ 'onehot-dense'๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ ์˜ต์…˜์ด ์•„๋‹ˆ๋ผ sparse ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹๋„ ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ด€๋ จํ•˜์—ฌ UnaryEncoder (https://github.com/scikit-learn/scikit-learn/pull/8652)๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์˜ ์ด๋ฆ„์— ๋Œ€ํ•œ ๊ด€๋ จ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ๋‹ค PR, ํ˜„์žฌ ์ด๋ฆ„์€ ์ด๋ฏธ ์ธ์ฝ”๋”ฉ ๋œ ์ •์ˆ˜, ์‹ค์ œ์ ์ธ ๋ฒ”์ฃผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„, ๊ทธ๊ฒƒ์€ ํ˜„์žฌ์˜ ๋””์ž์ธ (๋„์ฐฉ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์˜ ์œ ํ˜•, ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•. ์ด์™€ ๊ด€๋ จ,์— ๋งํ•œ๋Œ€๋กœ CategoricalEncoder์™€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ž…๋ ฅ์œผ๋กœ ์„œ์ˆ˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— OrdinalEncoder๋กœ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


์•ž์œผ๋กœ์˜ ์˜ต์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

1) ํ˜„์žฌ ๋งˆ์Šคํ„ฐ์— ์žˆ๋Š” ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ  ๋‹จ์ผ ํด๋ž˜์Šค์— ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. .
2) ๋ช…๋ช… ์ฒด๊ณ„๋ฅผ ์ „ํ™˜ํ•˜๊ณ  ์ด๋ฆ„์ด ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ๋‚˜ํƒ€๋‚ด๋Š” '์นดํ…Œ๊ณ ๋ฆฌ ์ธ์ฝ”๋”' ๋ฌด๋ฆฌ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค(OnehotEncoder, OrdinalEncoder, ๋‚˜์ค‘์—๋Š” BinaryEncoder, UnaryEncoder, ...).

๋”ฐ๋ผ์„œ ๋‹จ์ผ ํด๋ž˜์Šค์—์„œ ํด๋ž˜์Šค ์ˆ˜ ๋Œ€ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜ ์ˆ˜๋ฅผ ์ž ์žฌ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์•ฝ๊ฐ„ ์žˆ์Šต๋‹ˆ๋‹ค.


๋‘ ๋ฒˆ์งธ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ(๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ์ธ์ฝ”๋”ฉ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์—๋„ ์ฒ˜์Œ์— CategoricalEncoder ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ  ์ค‘ ํ•˜๋‚˜)๋Š” ์ด๋ฏธ OnehotEncoder ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CategoricalEncoder ์™€ ๋‹ค๋ฅธ API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์›-ํ•ซ ์ธ์ฝ”๋”ฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ธ์ฝ”๋”์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์ข‹์€ ์ด๋ฆ„์€ ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ผ์‹œ์ ์œผ๋กœ ๋ชป์ƒ๊ธด ํ•ดํ‚น์œผ๋กœ ํ˜„์žฌ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๋ฉด ์ด๋ฆ„์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๊ฐ€์žฅ ์œ ์šฉํ•œ ์†์„ฑ์ด ์•„๋‹ˆ๋ผ๋Š” ๋ฐ ๋™์˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ์•„์ด๋””์–ด๋Š” ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋กœ ํด๋ž˜์Šค๋ฅผ ๋งž์ถ”๋ฉด ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์–ป๊ณ , ์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋กœ ํด๋ž˜์Šค๋ฅผ ๋งž์ถ”๋ฉด ๊ธฐ๋ณธ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ง€์ •ํ•  ํ‚ค์›Œ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ์ œ๊ฑฐ).

cc @jnothman @amueller @GaelVaroquaux @rth

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

CategoricalEncoder๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ๋‚˜๋ฅผ ์ƒ๋‹นํžˆ ์Šฌํ”„๊ฒŒ ํ•˜์ง€๋งŒ ์ œ ์ƒ๊ฐ์—๋Š”
๋ฏธ๋ž˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ต์…˜ 2์— ๋Œ€ํ•ด ๋œ ์‹ ๋น„์Šค๋Ÿฌ์›Œํ•  ๊ฒƒ์ด๋ผ๋Š” ๋ง์ด ์˜ณ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ OHE์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ๊ทธ๊ฒƒ์€ ๊ฒฐ์ฝ” ๋‚ ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ œ์•ˆ๋œ ๋‚ด์šฉ์— ๋”ฐ๋ฅธ OneHotEncoder ๋…์ŠคํŠธ๋ง ์ˆ˜์ •
๋ณ€๊ฒฝํ•˜์—ฌ ์ •์ƒ์ ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

CategoricalEncoder๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ๋‚˜๋ฅผ ์ƒ๋‹นํžˆ ์Šฌํ”„๊ฒŒ ํ•˜์ง€๋งŒ ์ œ ์ƒ๊ฐ์—๋Š”
๋ฏธ๋ž˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ต์…˜ 2์— ๋Œ€ํ•ด ๋œ ์‹ ๋น„์Šค๋Ÿฌ์›Œํ•  ๊ฒƒ์ด๋ผ๋Š” ๋ง์ด ์˜ณ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ OHE์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ๊ทธ๊ฒƒ์€ ๊ฒฐ์ฝ” ๋‚ ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ œ์•ˆ๋œ ๋‚ด์šฉ์— ๋”ฐ๋ฅธ OneHotEncoder ๋…์ŠคํŠธ๋ง ์ˆ˜์ •
๋ณ€๊ฒฝํ•˜์—ฌ ์ •์ƒ์ ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ์—˜์ด ๋งํ•œ ๊ฒƒ์— +1

๋‚ด ํฐ์—์„œ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์˜คํƒ€์™€ ์งค๋ง‰ํ•จ์„ ์šฉ์„œํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

2018๋…„ 1์›” 23์ผ 12:28, 12:28์— Joel Nothman [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

CategoricalEncoder๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ๋‚˜๋ฅผ ์ƒ๋‹นํžˆ ์Šฌํ”„๊ฒŒ ํ•˜์ง€๋งŒ,
์ƒ๊ฐํ•œ๋‹ค
๋ฏธ๋ž˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ต์…˜ 2์— ๋Œ€ํ•ด ๋œ ๋‚ฏ์„ค๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. ๋‚ด
๊ธฐ๋ณธ
๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ OHE์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
NS
์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ๊ทธ๊ฒƒ์€ ๊ฒฐ์ฝ” ๋‚ ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ œ์•ˆ๋œ ๋‚ด์šฉ์— ๋”ฐ๋ฅธ OneHotEncoder ๋…์ŠคํŠธ๋ง ์ˆ˜์ •
๋ณ€๊ฒฝํ•˜์—ฌ ์ •์ƒ์ ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scikit-learn/scikit-learn/issues/10521#issuecomment -359761818

CategoricalEncoder๋ฅผ ๋˜๋Œ๋ฆฌ๋Š” ์•„์ด๋””์–ด๋Š” ๋‚˜๋ฅผ ๋งค์šฐ ์Šฌํ”„๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋งํ•˜๋ฉด ๋˜๋Œ๋ฆฌ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์œ ์ง€ํ•˜๋Š” ๋ฆฌํŒฉํ„ฐ๋ง/์ด๋ฆ„ ๋ณ€๊ฒฝ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!
๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋˜ํ•œ "CategoricalEncoder"๋ผ๋Š” ์ด๋ฆ„์„ ์ข‹์•„ํ•˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์€ ์ฐธ์œผ๋กœ ์Šฌํ”Œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ด๊ฒƒ์„ OnehotEncoder์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๊ฐ€๋Šฅํ•œ์ง€ ์•„์ด๋””์–ด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋น ๋ฅด๊ฒŒ ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข‹์•„, ๊ฐœ๋… ์ฆ๋ช…์œผ๋กœ PR์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค: https://github.com/scikit-learn/scikit-learn/pull/10523.
์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ  ๋ฐ ์ƒˆ ์†์„ฑ์ด ์ด์ „ ๋™์ž‘์—์„œ ์•„์ง ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Œ).

์ฃผ์š” API ์งˆ๋ฌธ์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์š”์•ฝํ•˜์ž๋ฉด ํ˜„์žฌ ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1) ์‹ค์ œ๋กœ์„œ ์•„์ง ์ธ์ฝ”๋”ฉ๋˜์ง€ ์•Š์€(์ •์ˆ˜ ๋˜๋Š” ๋ฌธ์ž์—ด), ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ( CategoricalEncoder ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฐฉ์‹) -> ๊ต์œก ๋ฐ์ดํ„ฐ์˜ ๊ณ ์œ  ๊ฐ’์—์„œ ๋ฒ”์ฃผ ์ถ”๋ก 
2) ์ •์ˆ˜๋กœ ์ด๋ฏธ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ(ํ˜„์žฌ OneHotEncoder ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฐฉ์‹) -> ๊ต์œก ๋ฐ์ดํ„ฐ์˜ ์ตœ๋Œ€๊ฐ’์—์„œ ๋ฒ”์ฃผ๋ฅผ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ง€์›ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋”ฐ๋ผ์„œ ์ž ์žฌ์ ์œผ๋กœ ๋ณ‘ํ•ฉ๋œ OneHotEncoder์—์„œ ๋‘˜ ๋‹ค ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์„œ์ˆ˜ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์™„์ „ํžˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ œ๊ฑฐํ•ฉ๋‹ˆ๊นŒ?

๋‘˜ ๋‹ค ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์›ํ•˜๋ฉด ๋ถ€์šธ ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ง€๊ธˆ์€ encoded_input=False/True ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” ordinal_input , ...)

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

๋‘˜ ๋‹ค ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ OneHotEncoder์˜ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ encoded_input=None ์ด๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๋ณธ๊ฐ’์„ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • int-like ๋ฐ์ดํ„ฐ(์ด์ „์— OneHotEncoder์—์„œ ์ฒ˜๋ฆฌ๋จ) encoded_input ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ True๋กœ ์„ค์ •๋˜๊ณ  ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ. ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ๋™์ž‘์„ ์œ ์ง€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ˆ˜๋™์œผ๋กœ OneHotEncoder(encoded_input=True) ๋กœ ์ง€์ •ํ•˜์—ฌ ๊ฒฝ๊ณ ๋ฅผ ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž…๋ ฅ์ด int์™€ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ encoded_input ๋ฅผ False๋กœ ์„ค์ •ํ•˜๊ณ  ๊ฒฝ๊ณ  ์—†์ด ์ƒˆ ๋™์ž‘(= ํ˜„์žฌ CategoricalEncoder ๋™์ž‘)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฏธ๋ž˜์— ์šฐ๋ฆฌ๋Š” encoded_input ๊ธฐ๋ณธ๊ฐ’์„ None์—์„œ False๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๋™์ž‘, int๋ฅ˜ ๋ฐ์ดํ„ฐ์—๋„ ์ ์šฉ)

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์ตœ๋Œ€ ๊ฐ’์—์„œ ๋ฒ”์ฃผ๋ฅผ ์ถ”๋ก ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์งˆ์ ์ธ ์ฐจ์ด์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jnothman ์—ฐ์Šต์— ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์•Œ๊ณ  ๊ณ„์‹œ๋‚˜์š” ? (๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ถœ๋ ฅ)

๊ทธ๋Ÿฌ๋‚˜ ์ด ์ฐจ์ด๊ฐ€ ์‹ค์ œ๋กœ ์ค‘์š”ํ•œ์ง€ ์—ฌ๋ถ€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ณณ์—์„œ ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‹ค์ œ๋กœ ์ด "์ตœ๋Œ€๊ฐ’" ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•์„ ์›ํ•˜๋Š”์ง€ , ์•„๋‹ˆ๋ฉด "๊ณ ์œ ํ•œ ๊ฐ’" ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•๋งŒ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์€์ง€(ํ–ฅํ›„ ์‚ฌ์šฉ ์ค‘๋‹จ ํ›„) ์—ฌ๋ถ€.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด ์ตœ๋Œ€๊ฐ’ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•์ด ์ ˆ๋Œ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ OneHotEncoder๋Š” ์ˆ˜๋…„ ๋™์•ˆ (ํ•ฉ๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๋“  ์—†๋“ ) ๊ทธ๋ ‡๊ฒŒ ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ตœ๋Œ€๊ฐ’ ๊ธฐ๋ฐ˜ ๋ฒ”์ฃผํ™”๋ฅผ ์ค‘๋‹จํ•˜๋ฉด ๊ตฌํ˜„(์ง€์› ์ค‘๋‹จ ํ›„)์ด ๋” ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ทธ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•œ๋‹ค๋ฉด ์˜ต์…˜์ด encoded_input / ordinal_input ๊ฐ€ ์•„๋‹ˆ๋ผ legacy_mode=True/False ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

n_values='auto'์ผ ๋•Œ ์ถœ๋ ฅ์˜ ์‹ค์ œ ์ฐจ์ด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ƒ๊ธฐ์‹œ์ผœ ์ฃผ์‹ญ์‹œ์˜ค.
์ œ๋ฐœ? ๋‚˜๋Š” active_features_๊ฐ€ ๊ทธ๊ฒƒ๋“ค์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๋™์ผํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๋ญ”๊ฐ€๋ฅผ ์žŠ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„ํ•˜, ์˜คํ•ด๊ฐ€ ํ’€๋ ธ์Šต๋‹ˆ๋‹ค :-)
ํ˜„์žฌ OneHotEncoder๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ž˜๋ชป ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์ด [2, 3, 5, 2]์ธ ํŠน์„ฑ์ด ํ•˜๋‚˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ OneHotEncoder์—๋Š” [0, 1, 2, 3, 4, 5] ๋ฒ”์ฃผ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ CategoricalEncoder์—๋Š” ๋ฒ”์ฃผ [2, 3, 5]). ๊ทธ๋Ÿฌ๋‚˜ active_features_ ๋„ [2, 3, 5]์ผ ๋ฟ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ n_values='auto' ์˜ ๊ธฐ๋ณธ๊ฐ’๊ณผ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ n_values ์ •์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ(์œ„์˜ ๊ฒฝ์šฐ category=[0, 1, 2, 3, 4, 5]์˜ ๊ฒฝ์šฐ n_values=6 ) ์‹ค์ œ๋กœ API ๋ณ€๊ฒฝ์ด ๋  ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ˆ˜(๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ/์ œ๊ฑฐ๋จ).
๊ทธ๋ฆฌ๊ณ  categories=range(6) ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ผ๋ž€์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ์ ์—์„œ ์šฐ๋ฆฌ๋Š” legacy_mode ์˜ต์…˜์กฐ์ฐจ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ n_values=6 ๋ฅผ categories=range(6) ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ์‹ค์ œ ํ…Œ์ŠคํŠธ์—์„œ ์ด๋ฅผ ํ™•์ธํ•ด์•ผ ํ•จ).

๋‹ค๋ฅธ ์ฐจ์ด์ ์€ ๋ณด์ด์ง€ ์•Š๋Š” ๋ฒ”์ฃผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. OneHotEncoder์˜ ํ˜„์žฌ ๋™์ž‘์œผ๋กœ, ๋ณด์ด์ง€ ์•Š๋Š” ๊ฐ’์ด ๋ฒ”์œ„(0, max) ๋‚ด์— ์žˆ์œผ๋ฉด handle_unknow='error' (๊ธฐ๋ณธ๊ฐ’)์ด๋”๋ผ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์กด ๋™์ž‘์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ handle_unknown='ignore' ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์—ฌ ๋ณ„๋„๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋†“์น  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ธฐ๋Šฅ์€ ๋ฒ”์œ„(0, max)(ํ˜„์žฌ OneHotEncoder์—์„œ๋Š” '์•Œ ์ˆ˜ ์—†์Œ'์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Œ) ๋‚ด์— ์žˆ๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ๋ฒ”์ฃผ์™€ ๊ทธ๋ณด๋‹ค ํฐ ๋ฒ”์ฃผ(> max, ํ˜„์žฌ ์ด๋ฏธ ๊ฐ„์ฃผ๋˜๊ณ  ์žˆ์Œ) ๊ฐ„์˜ ๊ตฌ๋ณ„์ž…๋‹ˆ๋‹ค. OneHotEncoder์—์„œ ์•Œ ์ˆ˜ ์—†์Œ).

์•„๋‹ˆ์š”, ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ „์— ์‹œ๋„ํ•œ ์ข…๋ฅ˜์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊นŒ๋‹ค๋กญ๊ฒŒ. ํ˜„์žฌ ํ–‰๋™์„ ์œ ์ง€ํ•  ํ•ฉ๋‹นํ•œ ์ด์œ ๊ฐ€ ์—†๋Š” ํ•œ,
์šฐ๋ฆฌ๋ฅผ ์ฒœ์ฒœํžˆ ๋ฏธ๋ž˜๋กœ ๋ฐ๋ ค๊ฐ€๋ ค๋ฉด legacy_mode๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ด์ „์— ์‹œ๋„ํ•œ ์ข…๋ฅ˜์ด๋ฉฐ ๋„ˆ๋ฌด ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค.

์ด "์•„๋‹ˆ์˜ค"๊ฐ€ ์–ด๋–ค ์ธก๋ฉด์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— legacy_mode ๋Š” ํ•„์š”์—†๋‹ค๊ณ ?

๋„ค, ๊ฑฐ๊พธ๋กœ ๋œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ
ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๊ณ  ์•ž์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ

๋„ค, ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๊ณ  ์•ž์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์—

๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ์ œ์•ˆํ•˜๋ ค๊ณ  ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” legacy_mode ํ‚ค์›Œ๋“œ๊ฐ€ ์—†๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ˆ ์ฒ˜๋Ÿผ ์—ญ๋ฐฉํ–ฅ๊ณผ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด ํ‚ค์›Œ๋“œ์˜ ๋™์ž‘์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด n_values ์˜ ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹Œ ๊ฐ’์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ categories ์‚ฌ์–‘์œผ๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. handle_unknow ์ •์ˆ˜ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ํ˜ผํ•ฉ ๋Œ€์‹  ์ „์ฒด ๋ฌด์‹œ ๋˜๋Š” ์ „์ฒด ์˜ค๋ฅ˜๋ฅผ ์„ ํƒํ•˜๋„๋ก ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•จ).

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ .fit([[5]]).transform([[4]]) ํ•˜๋ฉด n_values์˜ ๊ฐ’์€,
category ๋ฐ handle_umknown ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

2018๋…„ 1์›” 25์ผ ์˜ค์ „ 9์‹œ 32๋ถ„, "Joris Van den Bossche" [email protected]
์ผ๋‹ค:

๋„ค, ๊ฑฐ๊พธ๋กœ ๋œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ
ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๊ณ  ์•ž์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ

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

๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹Œ n_values โ€‹โ€‹๊ฐ’์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ
๋ฒ”์ฃผ ์‚ฌ์–‘์œผ๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ธ๋“ค_์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์ „์ฒด
ํ˜„์žฌ ํ˜ผํ•ฉ ๋Œ€์‹ ์— ๋ฌด์‹œ ๋˜๋Š” ์ „์ฒด ์˜ค๋ฅ˜ ๋ฐœ์ƒ(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋น„์ถ”์ฒœ
๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•จ).

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

๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋™์•ˆ ๋ฒ”์ฃผ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋ช…์‹œ์ ์œผ๋กœ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ๋Š” ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฑฐ์•ผ?
๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ง€์› ์ค‘๋‹จ ์ค‘์— ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๊ณ  ๊ฒฝ๊ณ ๊ฐ€ ์žˆ๋Š” ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ๊ฐ€ ์ ์šฉ๋˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์˜ˆ, ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋œ ์ผ€์ด์Šค์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ ํ•ฉ๋‹ˆ๋‹ค(๋‹ค์Œ ์ฃผ์— ์‹ค์ œ ์ฝ”๋”ฉํ•˜์—ฌ ํ™•์ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค).

๋‹ค์–‘ํ•œ '๋ ˆ๊ฑฐ์‹œ' ์‚ฌ๋ก€:

  • n_values='์ž๋™'(๊ธฐ๋ณธ๊ฐ’)

    • handle_unknown='๋ฌด์‹œ' -> ๊ดœ์ฐฎ์Œ, ๋™์ž‘์— ๋ณ€ํ™” ์—†์Œ

    • handle_unknown='error' -> ๋ฌธ์ œ, ๋ฒ”์œ„์˜ ๊ฐ’์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ฌด์‹œ๋˜๊ณ  ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฐ’์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.



      • ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…:





        • ๋ฒ”์œ„๊ฐ€ ์—ฐ์†์ ์ด๋ฉด => ๊ดœ์ฐฎ์Œ, ๋™์ž‘์— ๋ณ€ํ™”๊ฐ€ ์—†์Œ



        • ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ: ์ด ๋™์ž‘์„ ์œ ์ง€ํ•˜๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋น„์ถ”์ฒœ ๊ฒฝ๊ณ  ๋ฐœ์ƒ






  • n_values=๊ฐ’

    • ์ด๊ฒƒ์€ ๋‚ด๋ถ€์ ์œผ๋กœ category=[range(value)]๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜์ค‘์— ์ง์ ‘ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋น„์ถ”์ฒœ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

    • ์ด ๊ฒฝ์šฐ handle_unknown='error' / 'ignore' ๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ์šฐ์— ์ค‘๋‹จ ๊ฒฝ๊ณ  n_values='auto' ๋งŒ์— ์ธ์ƒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค fit (์ •๋ง ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)ํ•˜์ง€ ๊ฑด์„ค์— ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๊ฒƒ์„ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ณ ์—๋งŒ ์ ํ•ฉ์— ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์ˆซ์ž ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ์ ํ•ฉํ•  ๋•Œ๊นŒ์ง€ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
์ €๊ฒƒ.

๊ทธ ์ „๋žต์€ ๋Œ€๋ถ€๋ถ„ ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ž์—ด์„ ์Šค๋‹ˆํ•‘ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€๋งŒ. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
์„ค์ •๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ์ •์ˆ˜์˜ ๊ฒฝ์šฐ?

ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ: ๋ฒ”์ฃผ ๋ฐ n_values โ€‹โ€‹๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ธ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.
์šฐ๋ฆฌ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค_? n_values๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๊นŒ?
์นดํ…Œ๊ณ ๋ฆฌ_?

2018๋…„ 1์›” 29์ผ ์˜ค์ „ 10์‹œ "Joris Van den Bossche" ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋™์•ˆ ๋ฒ”์ฃผ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋ช…์‹œ์ ์œผ๋กœ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ๋Š” ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฑฐ์•ผ?
๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์˜ˆ, ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋œ ์ผ€์ด์Šค์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ์ฃผ ์‹ค์ œ ์ฝ”๋”ฉ์œผ๋กœ ํ™•์ธ).

๋‹ค์–‘ํ•œ '๋ ˆ๊ฑฐ์‹œ' ์‚ฌ๋ก€:

  • n_values='์ž๋™'(๊ธฐ๋ณธ๊ฐ’)

    • handle_unknown='๋ฌด์‹œ' -> ๊ดœ์ฐฎ์Œ, ๋™์ž‘์— ๋ณ€ํ™” ์—†์Œ

    • handle_unknown='์˜ค๋ฅ˜' -> ๋ฌธ์ œ, ๋ฒ”์œ„์˜ ๊ฐ’์ด ์—ฌ์ „ํžˆ

      ๋ฌด์‹œ๋จ, ๋ฒ”์œ„ ์ดˆ๊ณผ ๊ฐ’ ์˜ค๋ฅ˜



      • ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…:





        • ์ ํ•ฉ, ๋ฒ”์œ„๊ฐ€ ์—ฐ์†์ ์ด๋ฉด => ์–‘ํ˜ธ, ๋ณ€๊ฒฝ ์—†์Œ



          ํ–‰๋™(์ด์ œ LabelEncoder๋ฅผ ๊ฒฐํ•ฉํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด, ์ด๋Š”



          ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ „ํ˜•์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€)



        • ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ: ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ  ๋ฐœ์ƒ



          ๊ทธ๋“ค์€ ์ด ํ–‰๋™์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ 



          ๋‚ด๋ถ€์ ์œผ๋กœ ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ ์‚ฌ์šฉ)





      • n_values=๊ฐ’



    • ์ด๊ฒƒ์€ ๋‚ด๋ถ€์ ์œผ๋กœ category=[range(value)]๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋น„์ถ”์ฒœ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

      ๋ฏธ๋ž˜

    • ์ด ๊ฒฝ์šฐ handle_unknown='error' / 'ignore'๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

n_values='auto'์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋Š” ๋‹ค์Œ์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์ ํ•ฉํ•˜๊ณ  ๊ฑด์„ค ์‹œ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์ง€๋งŒ(์‹ค์ œ๋กœ ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์Œ)
์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ์ˆซ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ.

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

๋‹น์‹ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ์ด ์›ํ•˜๋Š” : ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋“  ์ •์ˆ˜์˜ ๊ฒฝ์šฐ ๋ฒ”์ฃผ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ™œ์„ฑํ™” ๋ฐ?

๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค(์‹ค์ œ๋กœ๋Š” ๊ฑฐ์˜ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค)

ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ: category์™€ n_values โ€‹โ€‹๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ธ ๊ฒฝ์šฐ category_๋ฅผ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๊นŒ? n_values๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ category_๋ฅผ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด๋ฏธ ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ์—์„œ๋„ ์ƒˆ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์†์„ฑ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ categories_ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค(์กฐ๊ธˆ ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋”๋ผ๋„)


๊ทธ๋ž˜์„œ ์œ„์˜ ๋…ผ๋ฆฌ๋ฅผ ์ฝ”๋“œ์— ๋„ฃ์œผ๋ ค๊ณ  ํ–ˆ๊ณ (PR์— ๋Œ€ํ•œ ์ผ๋ถ€ ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•จ) n_values ๋˜๋Š” categories ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ •์ˆ˜ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ํ•œ ๊ฐ€์ง€ ๋” ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค( 'legacy_mode'์˜ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ). ๋ฌธ์ œ๋Š” ์ถ”๋ก ๋œ ๋ฒ”์ฃผ๊ฐ€ ๋‹จ์ˆœํžˆ ์—ฐ์†์ ์ธ ๋ฒ”์œ„(0, 1, 2, 3, ... max)์ธ ๊ฒฝ์šฐ ์ƒˆ ๋™์ž‘๊ณผ ์ด์ „(๋ ˆ๊ฑฐ์‹œ) ๋™์ž‘ ๊ฐ„์— ์ฐจ์ด๊ฐ€ ์—†์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ์‚ฌ์‹ค์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด ํŠน์ • ๊ฒฝ์šฐ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ:

1) ์ด ๊ฒฝ์šฐ(์ถ”๋ก ๋œ ๋ฒ”์ฃผ๊ฐ€ ์—ฐ์† ๋ฒ”์œ„์ž„)๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ด ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
- ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์ ํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— (์กฐ๊ธˆ์˜ ์ถ”๊ฐ€ ์ฝ”๋“œ ๋ณต์žก์„ฑ์œผ๋กœ) ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋กœ OneHotEncoder๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ๋ผ๊ณ  ์ƒ๊ฐ ํ•˜๋ฉฐ, ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์šฐ๋ฆฌ์˜ ๋ฆฌํŒฉํ† ๋ง์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ๊ฒฝ๊ณ ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๊ท€์ฐฎ๊ฒŒ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
2) ํ•ญ์ƒ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€์— ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(์—ฐ์† ๋ฒ”์œ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ˆ˜ํ–‰ํ•  ์„ค๋ช…๊ณผ ํ•จ๊ป˜):
- ๋ฒ”์ฃผ๋กœ ์—ฐ์† ๋ฒ”์œ„๋งŒ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฏ€๋กœ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€์— ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ•„ํ„ฐ ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ์ฝ”๋“œ ์ƒ˜ํ”Œ ์ถ”๊ฐ€, ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ)
- ์ด๊ฒƒ์˜ ์ž ์žฌ์ ์ธ ์ด์ ์€ LabelEncoder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ ์ด์ œ OneHotEncoder๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ˜„์žฌ ์ด๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ํŒจํ„ด์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋ ‡๊ฒŒํ•˜๋ฉด ๊ฒฝ๊ณ ๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค
3) ํ•ญ์ƒ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋˜ ๊ฒฝ๊ณ ๋ฅผ ์นจ๋ฌต์‹œํ‚ค๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค(์˜ˆ: legacy_mode=False ).
- filterwarnings ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ผ๋Š” ์กฐ์–ธ(์œ„์˜ 2๋ฒˆ ํ•ญ๋ชฉ ์ฐธ์กฐ)์ด ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋ฉด ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์ด๊ฒƒ์˜ ๋‹จ์ ์€ ์‚ฌ์šฉ ์ค‘๋‹จ์ด ์ •๋ฆฌ๋  ๋•Œ ๋ช‡ ๊ฐ€์ง€ ๋ฆด๋ฆฌ์Šค์—์„œ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ‚ค์›Œ๋“œ๋ฅผ ๋„์ž…ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์˜ต์…˜ 1 ๋˜๋Š” 2์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. OneHotEncoder ์ „์— LabelEncoder๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(๋น ๋ฅธ github ๊ฒ€์ƒ‰์—์„œ). ์ด ๊ฒฝ์šฐ ํ•ญ์ƒ ์—ฐ์† ๋ฒ”์œ„๊ฐ€ ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ๊ตฌํ˜„์ด๋ฏ€๋กœ ๊ฒฝ๊ณ ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ, ์šฐ๋ฆฌ๊ฐ€ ๊ฒฝ๊ณ  ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์ด LabelEncoder๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๊ทธ๋“ค์€ ๋” ์ด์ƒ ํ•„์š”๊ฐ€ ๊ทธ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด ์กฐ์–ธ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „ ๋‹จ๊ณ„์—์„œ LabelEncoder๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฒ”์ฃผ์™€ ๊ฐ™์€ ์—ฐ์†์ ์ธ ์ •์ˆ˜๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š”์ง€์ž…๋‹ˆ๋‹ค.

ํ , ๋‚ด๊ฐ€ ์žŠ์€ ํ•œ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋Š” ์—ฐ์†์  ์ด์ง€ ์•Š์€ ์ •์ˆ˜ ์ถ”๋ก  ๋ฒ”์ฃผ(์˜ˆ: [1,3,5])๊ฐ€ ์žˆ์ง€๋งŒ ๋ ˆ๊ฑฐ์‹œ ๋™์ž‘์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์›ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. , ๋ณ€ํ™˜ ๋‹จ๊ณ„์—์„œ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฐ’์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋ฒ”์œ„(์˜ˆ: 2) ์‚ฌ์ด์˜ ๊ฐ’์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
legacy_mode=False ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ƒˆ ๋™์ž‘์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ categories=[1,3,5] ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์•ฝ๊ฐ„ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜ต์…˜ 3์„ ์„ ํ˜ธํ•˜๊ณ  ์ž„์‹œ ํ‚ค์›Œ๋“œ legacy_mode=False ๋„์ž…์— ๋Œ€ํ•œ ๋‚ด ์ด์˜๋ฅผ ํฌ๊ธฐํ•˜๋Š” ์ด์œ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”)

* ์ด ๊ฒฝ์šฐ๋งŒ = ์—ฐ์† ๋ฒ”์œ„๊ฐ€ ์•„๋‹Œ ์ถ”๋ก ๋œ ๋ฒ”์ฃผ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜ ๋ฐ์ดํ„ฐ, ๋ฒ”์ฃผ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ handle_unknown์„ ๋ฌด์‹œํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ.

๊ธด ํ…์ŠคํŠธ์— ๋Œ€ํ•ด ์ฃ„์†กํ•˜์ง€๋งŒ ์ƒ๋‹นํžˆ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. :)

์šฐ๋ฆฌ๋Š” n_values๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” 1๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋” ์ด์ƒ ๋น„์‹ธ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋ฏธ ๋ ˆ์ด๋ธ” ์ง‘ํ•ฉ์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค,
๋‹จ์ˆœ์„ฑ, 3์˜ ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ "๋ ˆ๊ฑฐ์‹œ์—์„œ ์‹คํ–‰๋˜๋Š” OneHotEncoder
๋ฐฉ๋ฒ•. ์—†์ด ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๋™์ž‘์— ๋Œ€ํ•ด category='auto'๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.
๊ฒฝ๊ณ ."

์šฐ๋ฆฌ๋Š” n_values๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

์˜ˆ(๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹นํ•˜๋Š” categories ๊ฐ’์œผ๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜๋˜๊ณ , ์ข‹์€ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ์ƒˆ ๋™์ž‘๊ณผ ๋ ˆ๊ฑฐ์‹œ ๋™์ž‘์ด ๋‹ค๋ฅด์ง€ ์•Š์Œ)

3์˜ ๋ณ€ํ˜•์€ "๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ OneHotEncoder์ž…๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ์—†์ด ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๋™์ž‘์— ๋Œ€ํ•ด ๋ฒ”์ฃผ๋ฅผ '์ž๋™'์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."

์•„, ์ข‹์€ ์ƒ๊ฐ์ด๊ตฐ์š”! (์—ฐ์†๋œ ๋ฒ”์ฃผ์˜ ๊ฒฝ์šฐ๋ฅผ ๊ฐ์ง€ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด). ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ์—์„œ categories ์˜ ๊ธฐ๋ณธ๊ฐ’์„ None์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ), ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๊ฒƒ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋Ÿฐ ์‹์œผ๋กœ legacy_mode=False ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค ์ถ”๊ฐ€ ํ‚ค์›Œ๋“œ ์—†์ด

์˜ˆ, ํ•˜์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ํ†ต๊ณผํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฝ๊ณ ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋งŒ
์นดํ…Œ๊ณ ๋ฆฌ. ์ €๋ ดํ•œ ๊ตฌํ˜„ ๋ฐฉ์‹์ด์ง€๋งŒ
์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์žฅํ™ฉํ•˜๋ฏ€๋กœ 1์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
๊ฐ„๋‹จํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์–ผ๋งˆ๋‚˜ ์‹ ์„ ํ•œ ์ง€์˜ฅ์ž…๋‹ˆ๊นŒ :-/

๋˜๋Š” ์ƒˆ๋กœ์šด ์ด๋ฆ„์„ DummyEncoder ;) (DummyClassifier์™€ ์•ฝ๊ฐ„ ์ถฉ๋Œํ•˜์ง€๋งŒ)

@amueller ์œ„์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ฝ์ง€ ๋งˆ์‹ญ์‹œ์˜ค!
๋‚˜๋Š” ๋‹จ์ง€ ์ด ๋ฌธ์ œ์˜ ์ƒˆ๋กœ์šด ๋…์ž๋“ค์„ ์œ„ํ•ด ๋ฉ‹์ง„ ์š”์•ฝ์„ ํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋…ผ์˜๋Š” ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค (๋˜ํ•œ OneHotEncoder์˜ ํ˜„์žฌ ๋ณต์žกํ•œ ๋™์ž‘์„ ์•„์ง ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ... :-))

๋˜๋Š” ์ƒˆ ์ด๋ฆ„์„ DummyEncoder๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

"one-hot"์ด ๋” ๋งŽ์€ ๋ถ„์•ผ์—์„œ ์•Œ๋ ค์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— @GaelVaroquaux ๊ฐ€ ๋ฐ˜๋Œ€ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„ ์ง€์ •์˜ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ด ์ž‘์—…์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์–ด๋””์—์„œ๋‚˜ ๋ช…๋ช…์— ์ผ๊ด€์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋…ผ์˜๋ฅผ ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” "๋”๋ฏธ"๊ฐ€ ํ†ต๊ณ„ํ•™์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ  ํŒฌ๋”๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋งจ ์œ„ ๊ฒŒ์‹œ๋ฌผ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ •ํ™•ํ•˜๊ณ  ์ฝ์„ ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฉฐ, CategoricalEncoder๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค(์ฆ‰, DummyEncoder ๋Œ€์‹  OneHotEncoder๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค)

์œ—๊ธ€ ์ž˜ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ "์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋‹ค์‹œ ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์น˜๊ฐ€ ์—†๋‹ค"๊ณ  ๋งํ–ˆ์„ ๋•Œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ด๋ฆฐ ๋ฌธ์ œ

๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

"์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ด ์ž‘์—…์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค"

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

์—ด๋ฆฐ ๋ฌธ์ œ

๋ˆ„๋ฝ๋œ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(https://github.com/scikit-learn/scikit-learn/issues/10465). ์ด๋ฅผ ์œ„ํ•ด ์„œ์ˆ˜ ๋ฐ ์› ํ•ซ ์ธ์ฝ”๋”ฉ(๋˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ)์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋™์ž‘์„ ์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ต์…˜์€ ๋‘˜ ๋‹ค์— ๋Œ€ํ•ด ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ..). ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๊ธฐ์กด handle_unknown ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Š” ์„œ์ˆ˜์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๊ณ  ์›-ํ•ซ ์ธ์ฝ”๋”ฉ์—๋งŒ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  onehot ์ธ์ฝ”๋”ฉ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ๊ฐ€์ค‘์น˜์— ๋Œ€ํ•œ https://github.com/scikit-learn/scikit-learn/issues/10518์ด ์žˆ์—ˆ์ง€๋งŒ ์„œ์ˆ˜์™€๋„ ๊ด€๋ จ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค(๊ฒฐ๊ตญ ์ด ๋ฌธ์ œ๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ColumnTransformer transformer_weights ์ธ์ˆ˜๋กœ ๊ฐ€์ค‘์น˜ ๋ถ€์—ฌ). ๋˜ํ•œ ์›-ํ•ซ์— drop_first ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋ผ๋Š” ๊ธฐ๋Šฅ ์š”์ฒญ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์‹œ ์„œ์ˆ˜ ์ธ์ฝ”๋”ฉ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ˆ„๋ฝ๋œ ๊ฐ’์— ์–ผ๋งˆ๋‚˜ ๋„์›€์ด ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์˜ต์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์€ scikit-learn์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ˆ„๋ฝ๋œ ๊ฐ’์— ์–ผ๋งˆ๋‚˜ ๋„์›€์ด ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ™์€ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค, ๊ทธ๋Ÿฌ๋‚˜ ๋œ ๋ณต์žก ํŠนํžˆ ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ ์œ ํ˜•์— ๋งž๋Š” ํŠน์ • ์˜ต์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์˜ต์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์€ scikit-learn์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” ํ™•์‹คํžˆ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์˜ต์…˜์ด ๋„ˆ๋ฌด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ๋ถ€๋ถ„์ ์œผ๋กœ๋Š” sparse=True/False ๋ฅผ encoding ์˜ต์…˜์œผ๋กœ ์˜ฎ๊ฒผ๊ธฐ ๋•Œ๋ฌธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋Š” ๋ฏธ๋ž˜์— scikit-learn์—์„œ ์ธ์ฝ”๋”ฉ ๊ธฐ๋Šฅ์„ ์–ด๋Š ์ •๋„๋กœ ํ™•์žฅํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š”์ง€์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ง€๊ธˆ ๋Œ€๋‹ต ํ•˜๊ธฐ ์–ด๋ ค์šด ์งˆ๋ฌธ ์ž…๋‹ˆ๋‹ค .
์šฐ๋ฆฌ๋Š” ์ด๋ฏธ '๋‹จํ•ญ ์ธ์ฝ”๋”ฉ'์— ๋Œ€ํ•œ PR์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํด๋ž˜์Šค UnaryEncoder๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  CategoricalEncoder์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋ˆ„๊ตฐ๊ฐ€ '๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ'์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋˜๋Š” '(ํ‰๊ท ) ๋Œ€์ƒ ์ธ์ฝ”๋”'?

"ํ‰๊ท  ๋Œ€์ƒ ์ธ์ฝ”๋”"๋Š” CountTransformer ์ด๊ณ  ์ด์— ๋Œ€ํ•œ PR์ด ์žˆ์Šต๋‹ˆ๋‹ค.)

๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? "CountTransformer"๋ฅผ ๊ฒ€์ƒ‰ํ•ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, CountFeaturer #9614

ํ™•์‹คํžˆ ๊ด€๋ จ์ด ์žˆ์ง€๋งŒ ์ •ํ™•ํžˆ ์˜๋ฏธ์žˆ๋Š” ๋Œ€์ƒ ์ธ์ฝ”๋”ฉ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ํ•œ ๋Œ€์ฒด๊ฐ€ ์•„๋‹Œ ์—ด์„ ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ ๋ฌธ์ž์—ด ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ์ด๋Š” ํ•ด๋‹น PR์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์ด๋ฉฐ ์—ฌ๊ธฐ์—์„œ ๋…ผ์˜ํ•˜์ง€ ์•Š์Œ).

๋Œ€์ƒ ์ธ์ฝ”๋”ฉ์„ ์˜๋ฏธํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋„ˆ๋ฌด ๋งŽ์ด ์šฐํšŒํ•˜์ง€ ๋ง์ž ;)

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ๋Œ€๋‹ตํ•ด์•ผ ํ•˜๋Š” ์‹ค์ œ ์งˆ๋ฌธ์˜ ์š”์•ฝ์œผ๋กœ (์ด ์ˆœ์„œ๋กœ!):

  1. ํ˜„์žฌ CategoricalEncoder ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•„์ด๋””์–ด๋Š” ๊ฐ ์ธ์ฝ”๋”ฉ ์œ ํ˜•(ํ˜„์žฌ 'onehot' ๋ฐ 'ordinal' ์ธ์ฝ”๋”ฉ)์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์ธ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  2. ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋กœ ๋ถ„ํ• ํ•˜๋ฉด 'onehot' ์ธ์ฝ”๋”ฉ์— OneHotEncoder๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(์ด์ƒ์ ์œผ๋กœ๋Š”?) ์ด ํด๋ž˜์Šค๋Š” ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ธฐ์กด OneHotEncoder ํด๋ž˜์Šค์— ์ƒˆ๋กœ์šด 'onehot' ์ธ์ฝ”๋”ฉ(๋ฌธ์ž์—ด์„ ์ง€์›ํ•˜๊ณ  ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง)์„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์„ ํƒํ•ฉ๋‹ˆ๊นŒ? (์˜ˆ: DummyEncoder)

  3. ๊ธฐ์กด OneHotEncoder์— ํ†ตํ•ฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๊นŒ? OneHotEncoder์˜ ์—ฌ๋Ÿฌ ํ‚ค์›Œ๋“œ/์†์„ฑ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€(๋ณด์ด๋Š” ๊ฐ’ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฐ’์„ ์ž๋™์œผ๋กœ ๋ฌด์‹œ)๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ธฐ๊ฐ„ ์ดํ›„.

์œ„์˜ ๋…ผ์˜์˜ ๋Œ€๋ถ€๋ถ„์€ ์งˆ๋ฌธ 3(CategoricalEncoder(encoding='onehot')์„ OneHotEncoder์— ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ณต์žกํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ)์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € ์ฒ˜์Œ 2๊ฐœ์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๊ฒฐ์ •์— ๋™์˜ํ•ฉ์‹œ๋‹ค.

๋‚˜์—๊ฒŒ ๋˜ ๋‹ค๋ฅธ ์š”์ธ์€ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ํ˜„์žฌ ์ž๋™ ๋ชจ๋“œ๋ฅผ
OneHotEncoder๊ฐ€ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. coo๋ฅผ csr๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ตฌํ˜„๋„
๊ธฐ์ด ํ•œ. ์žฌ์„ค๊ณ„ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ "๋‹น์‹ ์ด ํ•˜๋‚˜์˜ ๋œจ๊ฑฐ์šด
๋ฌธ์ž์—ด์„ ์ธ์ฝ”๋”ฉํ•˜๋ ค๋ฉด ๋Œ€์‹  CategoricalEncoder๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค."๋Š” OHE ๋•Œ๋ฌธ์— ์–ด์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
์€(๋Š”) ์ด๋ฏธ ๋ฒ”์ฃผํ˜•์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

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

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋น„์ถ”์ฒœํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ...

๋‚ด POC PR(https://github.com/scikit-learn/scikit-learn/pull/10523)์—์„œ ์ด๋ฆ„์„ ์ œ์™ธํ•˜๊ณ  OneHotEncoder์˜ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. LabelEncoder์— int์— ๋Œ€ํ•œ ๋น ๋ฅธ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
[0, n_values-1] ๋ฒ”์œ„์—์„œ ์ •๋‹นํ™”๋œ๋‹ค๋ฉด ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@amueller , ์ธ์ฝ”๋”ฉ์— ๋”ฐ๋ผ ๊ถ๊ทน์ ์œผ๋กœ ๋‹ค๋ฅธ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜(์˜ˆ: drop_first, nan ์ฒ˜๋ฆฌ)๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๊ฐ ์ธ์ฝ”๋”ฉ ํ˜•์‹์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฐœ๋ณ„ ์ธ์ฝ”๋”๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ •๋‹นํ™”๋œ๋‹ค๋Š” ๋ฌธ์ œ์— ์„ค๋“๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

2์ฃผ๋’ค์— ๋ด„๋ฐฉํ•™๋•Œ ์ด๊ฑธ ๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ• ๊ฒŒ, ์•Œ์•˜์ง€? ๊ทธ ์ „์— ์‹œ๊ฐ„์ด ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ :-/

์ด๊ฒƒ์ด ์ž˜๋ชป๋œ ์งˆ๋ฌธ์ด ์•„๋‹ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ๊ตฌํ˜„์€ ํ•œ ์—ด ๋‚ด์—์„œ ๋ฒ”์ฃผํ˜•๊ณผ ๋น„๋ฒ”์ฃผํ˜•์ด ํ˜ผํ•ฉ๋œ ํ…Œ์ด๋ธ”๋กœ ๋ฌด์—‡์„ ํ•ฉ๋‹ˆ๊นŒ? https://github.com/pandas-dev/pandas/issues/17418 ์—์„œ ์˜ˆ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ df = pd.DataFrame([{'apple': 1, 'pear':'a', 'carrot': 1}, {'apple':'a', 'pear':2, 'carrot':3}, {'apple': 2, 'pear':3, 'carrot':1}, {'apple': 3, 'pear':'b', 'carrot': 1}, {'apple': 4, 'pear':4, 'carrot': 1}]) ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

  apple  carrot pear
0     1       1    a
1     a       3    2
2     2       1    3
3     3       1    b
4     4       1    4

DictVectorizer๋Š” ์ด ๊ฒฝ์šฐ์— ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์„ ์ •ํ™•ํžˆ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    from sklearn.feature_extraction import DictVectorizer
    enc = DictVectorizer(sparse = False)
    enc.fit_transform(df.to_dict(orient='r'))

์ด๊ฒƒ์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

array([[ 1.,  0.,  1.,  0.,  1.,  0.],
       [ 0.,  1.,  3.,  2.,  0.,  0.],
       [ 2.,  0.,  1.,  3.,  0.,  0.],
       [ 3.,  0.,  1.,  0.,  0.,  1.],
       [ 4.,  0.,  1.,  4.,  0.,  0.]])

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ด์˜ ๊ธฐ๋Šฅ ์ด๋ฆ„์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    enc.feature_names_
    ['apple', 'apple=a', 'carrot', 'pear', 'pear=a', 'pear=b']

์ƒˆ CategoricalEncoder์— ๋™์ผํ•œ ์˜ต์…˜์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ํ˜ผํ•ฉ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃฐ ์ƒ๊ฐ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๋ถ€๋„๋Ÿฌ์šด ์ผ์ด์•ผ. ํ•œ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ํ•˜์œ„ ์‚ฌ๋ก€๋Š” ์—ด์ด ์ˆซ์ž์ด์ง€๋งŒ ์ผ๋ถ€ ๋ˆ„๋ฝ๋œ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ NaN์„ ๋นˆ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ์œ„์˜ ์˜ˆ์—์„œ์™€ ๊ฐ™์ด DictVectorizer๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ’์ด ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ƒˆ ๊ธฐ๋Šฅ์ด ํšจ๊ณผ์ ์œผ๋กœ ์ƒ์„ฑ๋˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ˆซ์ž ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ์ˆ ์ž„์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด CategoricalEncoder๊ฐ€ ๋น„์Šทํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ NaN์„ ๋ณ„๋„์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์ทจ๊ธ‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.
๋˜๋Š” ์œ ์‚ฌ. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์ž„์˜์˜ ์ˆซ์ž ๊ฐ’์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ทธ ์ข‹์€ ์†Œ๋ฆฌ.

๋‘ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ๊ฐ’์„ ๋ฌธ์ž์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•œ ํŠน์ • ์˜ˆ๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฐ ๋ฒ”์œ„์˜ ๊ฐ’์„ ์ทจํ•˜๋Š” ์ •์ˆ˜ ์ˆซ์ž ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ์ž‘์€ ๊ฐ’์˜ ๊ฒฝ์šฐ ์ •ํ™•ํ•œ ๊ฐ’์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋” ํฐ ๊ฐ’์˜ ๊ฒฝ์šฐ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์˜์‹ฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์ž‘์—…์€ ๋ชจ๋“  ์ž‘์€ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์œ„์™€ ๊ฐ™์ด DictVectorizer๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๊ธฐ๋Šฅ ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์„ ํ˜ธํ•˜๋Š” ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ๋น„์„ ํ˜• ์ด์‚ฐํ™”์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋Š”
๊ณ ์ • ๋„ˆ๋น„ ์ด์‚ฐํ™”๊ธฐ๋ฅผ ํฌํ•จํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ง€๋งŒ ๋กœ๊ทธ์—์„œ ๊ณ„์†
๋ณ€ํ™˜ ๋˜๋Š” ๋ถ„์œ„์ˆ˜ ๋ณ€ํ™˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์›ํ•˜๋Š”... ํ•˜์ง€๋งŒ ๋กœ๊ทธ ๋ณ€ํ™˜๋งŒ์œผ๋กœ๋„ ์„ค์ •์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2018๋…„ 2์›” 25์ผ 18์‹œ 10๋ถ„์— lesshaste [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ทธ ์ข‹์€ ์†Œ๋ฆฌ.

๋‘ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์˜ˆ๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค
์ˆซ์ž ๊ฐ’์„ ๋ฌธ์ž์—ด๊ณผ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•œ ๊ฒฝ์šฐ
๋‚˜๋ฅผ์œ„ํ•œ. ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฐ ๋ฒ”์œ„๋ฅผ ์ทจํ•˜๋Š” ์ •์ˆ˜ ์ˆซ์ž ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ฐ€์น˜. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ์ž‘์€ ๊ฐ’์˜ ๊ฒฝ์šฐ ์ •ํ™•ํ•œ ๊ฐ’์ด
์ค‘์š”ํ•˜๋‹ค. ๋” ํฐ ๊ฐ’์˜ ๊ฒฝ์šฐ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์˜์‹ฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ
ํ•ด์•ผ ํ•  ์ผ์€ ๋ชจ๋“  ์ž‘์€ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  DictVectorizer๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์œ„์™€ ๊ฐ™์ด ์„ ํƒํ•œ ๋‹ค์Œ ๊ธฐ๋Šฅ ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
์ง์ ‘ ๋ถ„๋ฅ˜๊ธฐ.

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

@jnothman ํŠธ์œ„์ŠคํŠธ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์–ด๋–ค ์˜๋ฏธ

์ œ๋„ค๋ฆญ์— ๋Œ€ํ•œ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋งŽ์ด ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ•„์š”ํ•œ ์ข…๋ฅ˜๋กœ ๋ณ€ํ™˜ํ•˜์‹ญ์‹œ์˜ค.

2018๋…„ 2์›” 25์ผ 20์‹œ 37๋ถ„์— lesshaste [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@jnothman https://github.com/jnothman
ํŠธ์œ„์ŠคํŠธ. 1...1024์˜ ๊ฐ’ ์ค‘ ์ผ๋ถ€๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ฆ‰ 22๋Š” 21๊ณผ ์ƒ๋‹นํžˆ ๋‹ค๋ฅธ ํŠน์ •ํ•œ ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  1. ์—ฌ๊ธฐ์„œ ๋กœ๊ทธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋ชจ๋“  ๊ฐ€์น˜๋ฅผ ๋– ๋‚˜๊ณ  ์‹ถ์–ด
    1024 ์ˆซ์ž๋งŒํผ์€ ๊ทธ ํŠน์ • ๊ฐ’์ด ํฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

@jnothman ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ผ๋ถ€ ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ

@lesshaste NaN์„ ๋ณ„๋„์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ๋Š” https://github.com/scikit-learn/scikit-learn/issues/10465๋ฅผ ์ฐธ์กฐ
ํŠน์ • ๋น„์„ ํ˜• ์ด์‚ฐํ™” ๋˜๋Š” ํ˜ผํ•ฉ ์ˆซ์ž/๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ๋…ผ์˜ํ•˜๋ ค๋ฉด ์ž์œ ๋กญ๊ฒŒ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๋Š” ์›๋ž˜ ๋ฌธ์ œ, ์ฆ‰ CategoricalEncoder/OneHotEncoder์˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ๋ช…๋ช… ๋ฐ ๊ตฌ์„ฑ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

2์ฃผ๋’ค์— ๋ด„๋ฐฉํ•™๋•Œ ์ด๊ฑธ ๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ• ๊ฒŒ, ์•Œ์•˜์ง€? ๊ทธ ์ „์— ์‹œ๊ฐ„์ด ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ :-/

@amueller ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ด๊ฒƒ์— ์˜ํ•ด ์ฐจ๋‹จ๋œ PR์— ๋Œ€ํ•ด ์•ž์œผ๋กœ 2์ฃผ ๋™์•ˆ ์ž‘์—…ํ•  ์‹œ๊ฐ„์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„์—๋Š” ๋‹ค์‹œ ์ž‘์—…ํ•  ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@amueller ์‹œ๊ฐ„์ด ์žˆ์—ˆ๋‚˜์š”?

@amueller ๋‚ด๊ฐ€ OrdinalEncoder์™€ OneHotEncoder์—์„œ CategoricalEncoder๋ฅผ ๋ถ„ํ• ํ•˜๊ธฐ ์œ„ํ•œ PR ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ดœ์ฐฎ์Šต๋‹ˆ๊นŒ?

๊ฒฐ์„ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์•„ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋„๋ก 2์ฃผ๋ฅผ ์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”!

@amueller ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค :-)
ํ•˜์ง€๋งŒ, ๋‚˜๋Š” ์ง€๊ธˆ ์ด๊ฒƒ์„ ๋‹ค์‹œ ๋ณผ ๊ณ„ํš์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ํ™˜์˜๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. PR(https://github.com/scikit-learn/scikit-learn/pull/10523)์— ๋Œ€ํ•ด ํ•ด์•ผ ํ•  ์ผ์ด ์žˆ์œผ๋ฏ€๋กœ ์•„์ง ์ž์„ธํžˆ ๊ฒ€ํ† ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ).
๋งŽ์€ ์‹œ๊ฐ„์„ ๋“ค์ด๊ธฐ ์ „์— ๋‹ต๋ณ€์„ ๋ณด๊ณ  ์‹ถ์€ ์ฃผ์š” ์งˆ๋ฌธ์€ CategoricalEncoder๋ฅผ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋กœ ๋ถ„ํ• ํ•ด๋„ ๊ดœ์ฐฎ์€์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒฝ์šฐ OneHotEncoder๋ฅผ ์žฌ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์€์ง€(์ฆ‰, ํ˜„์žฌ (์ด์ƒํ•œ) ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ). ํ•ด๋‹น ์งˆ๋ฌธ์€ https://github.com/scikit-learn/scikit-learn/issues/10521#issuecomment -363851328 ๋ฐ https://github.com/scikit-learn/scikit-learn/issues/10521#issuecomment์— ์š”์•ฝ๋˜์–ด

(๊ทธ๋ฆฌ๊ณ  ์ผ๋‹จ ๊ทธ ๋ถ€๋ถ„์— ๋™์˜ํ•˜๋ฉด PR์—์„œ ์‹ค์ œ ๊ตฌํ˜„์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ๊ฒƒ์ด ์—ฌ์ „ํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค :))

PR์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค https://github.com/scikit-learn/scikit-learn/pull/10523 , ๊ฒ€ํ†  ์ค€๋น„

์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค ;)

IMHO์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•˜๋Š” ๋ชจ๋“  ์ธ์ฝ”๋”์— ๋Œ€ํ•œ ๋ฒ”์šฉ API(์˜ˆ: ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ๋™์ž‘ ํŒจํ„ด)์ž…๋‹ˆ๋‹ค.

์ถ”์‹  https://github.com/scikit-learn-contrib/categorical-encoding ?

category_encoders ํŒจํ‚ค์ง€์—์„œ ๋ชจ๋“  ์ธ์ฝ”๋”์—๋Š” ์ด์ „ OneHotEncoder์˜ categorical_features ์™€ ์œ ์‚ฌํ•œ cols ์ธ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์ •ํ™•ํžˆ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€๋Š” ์•Š์ง€๋งŒ). ์˜ˆ๋ฅผ ๋“ค์–ด http://contrib.scikit-learn.org/categorical-encoding/onehot.html์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค
์ด๋Š” https://github.com/scikit-learn/scikit-learn/pull/10523 ์—์„œ categorical_features ์‚ฌ์šฉ ์ค‘๋‹จ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ํ˜„์žฌ ๋…ผ์˜์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋จธ์ง€๋Š” ์‹ค์ œ๋กœ ์ถฉ๋Œํ•˜๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์ด ์‹œ์ ์—์„œ sklearn์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์„ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์— ํŠน์ •ํ•œ ๋‹ค๋ฅธ ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์Œ). OneHotEncoder ๋ฐ OrdinalEncoder์˜ ์ด๋ฆ„์€ ์ตœ์†Œํ•œ category_encoders ํŒจํ‚ค์ง€์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

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