๋์ ์ฒซ ๋จธ์ ๋ฌ๋&๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ (3)
๐1์ฃผ์ฐจ 220110 ~ 220116 ๊ณต๋ถ๊ธฐ๋ก
๐ ๋ณธ ํฌ์คํ ์ <ํผ์ ๊ณต๋ถํ๋ ๋จธ์ ๋ฌ๋+๋ฅ๋ฌ๋> ์ฑ ์ ๋ฐํ์ผ๋ก ์์ฑํจ์ ์๋ฆฝ๋๋ค.
โ Ch.02-2 ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
K-NN ์๊ณ ๋ฆฌ์ฆ ์ค์ต (1์๊ณผ 7์์ ํ๊ท ๊ธฐ์จ๊ณผ ์ผ๊ฐ์๋)
* 1์๊ณผ 7์์ ์ผ๊ฐ์๋ ์ค์์ ์ธก์ ์ด ๋์ง ์์ ๊ฐ์๋์ 0์ผ๋ก ์ค์ ํจ.
๊ทธ๋์ ์ผ๊ฐ์๋์ ์ฐจ์ด๊ฐ ์๊ธด ํ์ง๋ง ๊ทน๋ช ํ ์ฐจ์ด๋ฅผ ๋ณผ ์ ์์.
* K-NN ์๊ณ ๋ฆฌ์ฆ์ด ํ๊ท ๊ธฐ์จ์ 14.1์ ๊ฒจ์ธ๋ก ํ๋จํ๊ณ 14.2๋ฅผ ์ฌ๋ฆ์ผ๋ก ํ๋จํจ. (๊ฐ์๋์ 0์ผ๋ก ํจ)
๋ณดํต 10์์ 10~15๋์ ํ๊ท ๊ธฐ์จ์ด ๋ง๋ค. 14๋๋ฉด ๋ด๊ณผ ๊ฐ์์ ์ธ์ ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๊ฒจ์ธ๊ณผ ์ฌ๋ฆ์ ์ด์ง๋ถ๋ฅ ํ ์ ์์.
* ๋ณธ์ธ์ ๋ฅ๋ ฅ ๋ถ์กฑ์ผ๋ก ํผ๊ณต๋จธ์ ์ฑ ์ฒ๋ผ ์์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์์.
ex. ์์ธ์ ๋ฐ์ดํฐ → 7์์ ํ๊ท ๊ธฐ์จ or ์ผ๊ฐ์๋์ธ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ด ๊ฒจ์ธ๋ก ํ๋จ
* ๊ทธ๋์ K-NN ์๊ณ ๋ฆฌ์ฆ์ ์ ํ๋๋ฅผ ํ์ ํ๋ ๊ฒ๋ณด๋ค ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ค์ผ์ผ์ ์กฐ์ ํ๋ ๊ฒ์ ์์๋ฅผ ๋๊ณ
๋ธ๋ก๊ทธ ๊ธ์ ์์ฑํ๊ฒ ์ต๋๋ค.
๐ฆ ๋ํ์ด๋ฅผ ์ด์ฉํด์ 2์ฐจ์ ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
๋ฐ์ดํฐ ์ค๋นํ๊ธฐ, ๋ํ์ด ์ํฌํธ ํด์ ๊ธฐ์จ๊ณผ ๊ฐ์๋์ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ
data - column_stack() ํจ์๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ ๋ฆฌ์คํธ ๋๋ํ ๋ถ์ด๊ธฐ
target - concatenate() ํจ์ ์ด์ฉํด์ ํ๊ฒ์ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ

column_stack() ํจ์ : ์ ๋ฌ๋ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ผ๋ ฌ๋ก ์ธ์ด ๋์ ์ฐจ๋ก๋๋ก ๋๋ํ ์ฐ๊ฒฐ (1์ฐจ์ ๋ฐฐ์ด์ 2์ฐจ์ ๋ฐฐ์ด๋ก ์์) concatenate() ํจ์ : ์ฒซ ๋ฒ์งธ ์ฐจ์์ ๋ฐ๋ผ ๋ฐฐ์ด์ ์ฐ๊ฒฐ |
๐ฆ ์ฌ์ดํท๋ฐ ํจ์๋ฅผ ์ฌ์ฉํด์ ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ ๋๋๊ธฐ
train_test_splt() ํจ์ : ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ๋ก ๋๋๋ ํจ์.
- - ์ฌ๋ฌ ๊ฐ์ ๋ฐฐ์ด์ ์ ๋ฌํ ์ ์์.
- ํ ์คํธ ์ธํธ๋ก ๋๋ ๋น์จ์ text_size ๋งค๊ฐ๋ณ์์์ ์ง์ ํ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0.25(25%) ์ด๋ค.
- ๋๋๊ธฐ ์ ์ ์ธ๋ฑ์ค๋ฅผ ์์์ ์์ด์ค. (์ด์ ์๋ random๊ณผ shuffle์ ์ด์ฉํด์ arange() ํจ์์ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ์์)

โ ์ํ๋ง ํธํฅ ์ฃผ์ - ๋น์จ
์ฑ ์์๋ ๋น์จ์ด ์๋ง์์ ์ํ๋ง ํธํฅ ๋ฐ์. (๋ณธ ์ค์ต์์๋ 1:1๋ก ๋น์จ์ด ๋ง์ถฐ์ง)
๋น์จ์ด ์ผ์ ํ์ง ์์ ๋ ํด๊ฒฐ๋ฐฉ๋ฒ : stratify() ๋งค๊ฐ๋ณ์์ ํ๊น์ ์ ๋ฌํ๋ฉด ํด๋์ค ๋น์จ์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋๋ ์ค๋ค.
(์ฑ ๊ณผ ๊ฐ์ ์ค์ต์ ํ๊ธฐ ์ํด์ ํ ๋ฒ ๋ ๋น์จ์ ๋ง์ถฐ์ค)

๐ฆ ์์ธ์ ์ํ๋ก ํ ์คํธํด๋ณด๊ธฐ - (๋ฌธ์ ๋ฐ์)
K-NN์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ KNeighbors ํด๋์ค๋ฅผ ์ํฌํธํ๊ณ ์ฐ์ ๋ ๊ทธ๋ ค๋ณด๊ธฐ.
์์ธ์ ์ํ์ ๐บ ๋ก ํ์ํจ.
predictํ์์ ๋, 0์ผ๋ก ํ๋จํ์๋ค.

์ด๋ฏธ์ง์ ํ ์คํธ์ ์ค๋ช ํ์๋ฏ์ด, ์๊ฐ์ ์ผ๋ก ๋ณด์์ ๋๋ ์ฌ๋ฆ(1)์ ๋ ๊ฐ๊น์ด ์ด์์ด ๋ง์๋ณด์ธ๋ค.
[16, 7]์ ์ ๋งคํ ํ๊ท ๊ธฐ์จ, ์ผ๊ฐ์๋์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์ ๊ธฐ๊ฐ ์๋ ์ ์์ด์ ๋ณธ ์ค์ต์ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ์ง ๋ชปํ๋ค.
(์ค์ต ๋๋ถ์ ์๋ก์ด ๊ฒฝํ์ ํ ์ ์๋ค.)
distance, indexes๋ [16, 7]๊ณผ ๊ฐ๊น์ด ํน์ฑ์ ๊ฑฐ๋ฆฌ์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์์๋ณด๊ธฐ ์ฝ๊ฒ ์ด๋ก์ ๋ง๋ฆ๋ชจ(๐ท)๋ก ๋ง์ปค ํ์๋ฅผ ํ์๋ค.

์ธ๋ฑ์ค์ ๋ฐ์ดํฐ์ ํ๊ฒ์ด ๊ฐ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ์ฅ ์ฒซ ๋ฒ์จฐ ์๋ [23.0, 0]์ ํ๊ท ๊ธฐ์จ์ผ๋ก ๋ณด์์ ๋ ์ฌ๋ฆ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฐ์ target์ ๋ณด๋ฉด ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์๋ ํ๊ฒ์ 1์์ ์ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ kneighbors() ๋ฉ์๋์์ ๋ฐํํ๋ distances ๋ฐฐ์ด์ ์ถ๋ ฅํด๋ณด๋ฉด ์ด์ ์ํ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ ์๋ค.

๐ฆ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ(ํ์ค ์ ์)๋ก ๊ธฐ์ค ๋ง์ถ๊ธฐ - (๋ฌธ์ ํด๊ฒฐ)

์์ ๊ณผ์ ์์ ์ด์ ์ํ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
์กฐํฉํด์ ๋ฐ์ ธ๋ณด๋ฉด ์ฌ๋ฆ ์ชฝ๊น์ง์ ๊ฑฐ๋ฆฌ๋ 10.1139์ด๊ณ ๊ฒจ์ธ ์ชฝ๊น์ง์ ๊ฑฐ๋ฆฌ๋ 10.7056์ด๋ค.
์ฝ 10์ผ๋ก ๋น์ทํ๋ค๊ณ ํ ์ ์์ง๋ง, ๊ทธ๋ํ ์์์๋ ๊ฑฐ๋ฆฌ ๋น์จ์ด ์ด์ํ๋ค.
๊ทธ ์ด์ ๋ x์ถ์ ๋ฒ์์ y์ถ์ ๋ฒ์๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.

→ x์ถ๊ณผ y์ถ์ ๋ฒ์๋ฅผ ๋ง์ถฐ์ฃผ๋ฉด ๋๋ค.
(๊ทน์ ์ธ ์ฐจ์ด๋ฅผ ๋ณด๊ณ ์ถ์๋ฐ ๊ฒฐ๊ณผ๊ฐ ์๊ฐ๋ณด๋ค ๊ทน์ ์ด์ง ์์์ ์ค๋งํ๋ค.)
* ๋ฒ์๋ฅผ ๋ณ๊ฒฝํด๋ ํฐ ์ฐจ์ด๊ฐ ์๊ณ , ์ผ๊ฐ์๋์ด ์๋ ํฐ ์ฐจ์ด๊ฐ ์์ด์ ์ฒ์๋ถํฐ ํ๊ท ๊ธฐ์จ์ด 0๊ณผ 1์ ์ข์ง์ฐ์ง ํ๋ ๊ณ ๋ ค๋์์์ ์ธ์งํ๊ณ ์์๋ค. ๊ทธ๋๋ ์ค์ต์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ํด ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ๊ณต๋ถํด๋ณด์!
โ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฃผ์ ํ๊ธฐ ์ ์ ๊ฐ๊ณตํ๋ ๋จ๊ณ.
ํนํ, ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์์ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๊ธฐ์ค์ ๋ง์ถฐ์ฃผ๊ธฐ ์ํด์ ํ๋ ์์ ์ด๋ค.
๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉํ๋ ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ์ค ํ๋๋ ํ์ค์ ์(standard score)์ด๋ค.
- ํ์ค ์ ์ : ๊ฐ ๋ฐ์ดํฐ๊ฐ ์์ ์์ ๋ช ํ์คํธ์ฐจ๋งํผ ๋จ์ด์ ธ ์๋์ง
- ํ์ค ํธ์ฐจ : ๋ถ์ฐ์ ์ ๊ณฑ๊ทผ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ๋ ์ ๋๋ฅผ ๋ํ๋ธ๋ค.

ํน์ฑ๋ง๋ค ๊ฐ์ ์ค์ผ์ผ์ด ๋ค๋ฅด๋ฏ๋ก ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ฅผ ๊ฐ ํน์ฑ๋ณ๋ก ๊ณ์ฐํ๊ธฐ ์ํด axis๋ฅผ ์ฌ์ฉํ๋ค.
axis = 0์ผ๋ก ์ง์ ํ๋ฉด ํ์ ๋ฐ๋ผ ๊ฐ ์ด์ ํต๊ณ ๊ฐ์ ๊ณ์ฐํ๋ค.
๐ฆ ์ ์ฒ๋ฆฌ ๋ฐ์ดํฐ๋ก ๋ชจ๋ธ ํ๋ จํ๊ธฐ
์ค์ผ์ผ์ด ์กฐ์ ๋ ๋ฐ์ดํฐ์ ์ผ๋ก K-NN์๊ณ ๋ฆฌ์ฆ ๋ชจ๋ธ์ ํ๋ จํ ๊ฒฐ๊ณผ์ด๋ค.

๐ฆ ๊ฒฐ๊ณผ




๊ฐ์, ๋ด์ ๊ธฐ์จ์ ๊ณจ๋ผ์ ํ ์คํธ๋ฅผ ํ๊ธฐ์ ๊ฒฐ๊ณผ์ ๋ํ ํ์ ์ ์์๋ค.
์ค์ผ์ผ ์กฐ์ ํ ๋ค์ ์์ธกํด ๋ณด์์ ๋, 1์ด ๋์์ ๋๋๋ค.
๋ด๊ฐ ๋๋ ์ด์ ๋ ์ฐ์ ๋๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์์ ๋, ๋๋ผ๋งํฑํ๊ฒ ๋ณํ๊ฒ ์์๊ธฐ ๋๋ฌธ์ด๋ค.


ํน์ฑ์ ํ์ค์ ์๋ก ๋ฐ๊พธ์๊ธฐ ๋๋ฌธ์ K-NN ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ์๋ค.
๊ทธ๋ก ์ธํด ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ ๋ณํ๊ฐ ์๊น
(์ ) ๋ง๋ฆ๋ชจ(๐ท)๊ฐ 0์ชฝ์ 3๊ฐ, 1์ชฝ์ 2๊ฐ ์์ด์ ์์ธก๊ฒฐ๊ณผ๊ฐ 0์ผ๋ก ๋์๋ค.
(ํ) ๋ง๋ฆ๋ชจ(๐ท)๊ฐ 0์ชฝ์ 2๊ฐ, 1์ชฝ์ 3๊ฐ ์์ด์ ์์ธก๊ฒฐ๊ณผ๊ฐ 1๋ก ๋์๋ค.
๋ ์ ๊ธฐํ ์ ์, ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฑฐ๋ฆฌ์ ์๋ ์ํ 5๊ฐ์ ์์น๊ฐ ๋ฌ๋ผ์ก๋ค๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ์ ๋ํ ์ค์์ฑ์ ๊นจ๋ฌ์๋ค.
(๋๋ถ๋ถ์ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํน์ฑ์ ์ค์ผ์ผ์ด ๋ค๋ฅด๋ฉด ์ ์๋ํ์ง ์๋๋ค๊ณ ํ๋ค.
๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ ๋ฒ ๋ ์๋ํด๋ณด๊ณ ์ถ์ ๋ง์์ด ์๋ค.)
- ๋งทํ๋กญ๋ฆฟ์ ์ ์ฒด ๋ง์ปค ๋ฆฌ์คํธ
https://matplotlib.org/stable/api/markers_api.html
matplotlib.markers — Matplotlib 3.5.1 documentation
matplotlib.markers Functions to handle markers; used by the marker functionality of plot, scatter, and errorbar. All possible markers are defined here: marker symbol description "." point "," pixel "o" circle "v" triangle_down "^" triangle_up "<" triangle_
matplotlib.org