Chapter 1. ์†Œ๊ฐœ - 2

๊น€์„ ์žฌยท2022๋…„ 7์›” 30์ผ
0
post-thumbnail

๐Ÿ’ก ๋จผ์ € ์˜ฌ๋ฆฐ Chapter 1.์†Œ๊ฐœ -1๊ณผ ์ด์–ด์ง€๋Š” ๋’ท ๋ถ€๋ถ„ ๋‚ด์šฉ
๐Ÿ‘‰ https://velog.io/@ksj5738/Chapter-1.-%EC%86%8C%EA%B0%9C-1

1.3. ์ฒซ ๋ฒˆ์งธ ์• ํ”„๋ฆฌ์ผ€์ด์…˜: ๋ถ“๊ฝƒ์˜ ํ’ˆ์ข… ๋ถ„๋ฅ˜

  • ๊ฐ„๋‹จํ•œ ๋จธ์‹ ๋Ÿฌ๋‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ›“์–ด๊ฐ€๋ฉด์„œ ์ฒซ ๋ฒˆ์งธ ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด๋ณธ๋‹ค

    ์•„๋งˆ์ถ”์–ด ์‹๋ฌผํ•™์ž๊ฐ€ ๋“ค์—์„œ ๋ฐœ๊ฒฌํ•œ ๋ถ“๊ฝƒ์˜ ํ’ˆ์ข…์„ ์•Œ๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •
    ( ์•„๋งˆ์ถ”์–ด ์‹๋ฌผํ•™์ž๊ฐ€ ์•ผ์ƒ์—์„œ ์ฑ„์ง‘ํ•œ ๋ถ“๊ฝƒ์€ ์„ธ ์ข…๋ฅ˜๋ฟ์ด๋ผ๊ณ  ๊ฐ€์ • )

    • ๋ถ“๊ฝƒ์˜ ๊ฝƒ์žŽ( petal )๊ณผ ๊ฝƒ๋ฐ›์นจ( sepal )์˜ ํญ๊ณผ ๊ธธ์ด๋ฅผ ์„ผํ‹ฐ๋ฏธํ„ฐ ๋‹จ์œ„๋กœ ์ธก์ •ํ•˜์˜€๋‹ค.
    • ์ „๋ฌธ ์‹๋ฌผํ•™์ž๊ฐ€ setosa, versicolor, virginica ์ข…์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ ๋ถ“๊ฝƒ์˜ ์ธก์ • ๋ฐ์ดํ„ฐ๋„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ์–ด๋–ค ํ’ˆ์ข…์ธ์ง€ ๊ตฌ๋ถ„ํ•ด๋†“์€ ์ธก์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ ์ฑ„์ง‘ํ•œ ๋ถ“๊ฝƒ์˜ ํ’ˆ์ข…์„ ์˜ˆ์ธกํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋งŒ๋“ ๋‹ค.
  • ๋ถ“๊ฝƒ์˜ ํ’ˆ์ข…์„ ์ •ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฅ˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋Š” ์ง€๋„ ํ•™์Šต์— ์†ํ•œ๋‹ค.

  • ์ด ๊ฒฝ์šฐ ๋ช‡ ๊ฐ€์ง€ ์„ ํƒ์‚ฌํ•ญ( ๋ถ“๊ฝƒ์˜ ํ’ˆ์ข… ) ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„๋ฅ˜ (Classification) ๋ฌธ์ œ์— ํ•ด๋‹น๋œ๋‹ค.

  • ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’ (๋ถ“๊ฝƒ์˜ ์ข…๋ฅ˜ )๋“ค์„ ํด๋ž˜์Šค( class )๋ผ๊ณ  ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ์…‹์— ์žˆ๋Š” ๋ถ“๊ฝƒ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ์„ธ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜์— ์†ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ํ•˜๋‚˜( ๋ถ“๊ฝƒ ํ•˜๋‚˜ )์— ๋Œ€ํ•œ ๊ธฐ๋Œ€ ์ถœ๋ ฅ์€ ๊ฝƒ์˜ ํ’ˆ์ข…์ด ๋˜๋Š”๋ฐ ์ด๋Ÿฐ ํŠน์ • ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ถœ๋ ฅ์„ ๋ ˆ์ด๋ธ”( label )์ด๋ผ๊ณ  ํ•œ๋‹ค.

1.3.1. ๋ฐ์ดํ„ฐ ์ ์žฌ

  • ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ํ†ต๊ณ„ ๋ถ„์•ผ์—์„œ ์˜ค๋ž˜์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ด์˜จ ๋ถ“๊ฝƒ(iris) ๋ฐ์ดํ„ฐ ์…‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์…‹์€ scikit-learn์˜ dataset ๋ชจ๋“ˆ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค
from sklearn.datasets import load_iris

iris_dataset = load_iris()

# iris ๊ฐ์ฒด๋Š” ํŒŒ์ด์ฌ ๋”•์…”๋„ˆ๋ฆฌ์™€ ์œ ์‚ฌํ•œ Bunch ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋กœ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ
print('iris_dataset์˜ ํ‚ค: \n', iris_dataset.keys())

# DESCR ํ‚ค์—๋Š” ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์ด ๋“ค์–ด์žˆ๋‹ค.
print(iris_dataset['DESCR'][:193] + '\n...')

~~>
iris_dataset์˜ ํ‚ค: 
 dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
.. _iris_dataset:

Iris plants dataset
--------------------

**Data Set Characteristics:**

    :Number of Instances: 150 (50 in each of three classes)
    :Number of Attributes: 4 numeric, pre
...
# target_names์˜ ๊ฐ’์€ ๋ถ“๊ฝƒ ํ’ˆ์ข…์˜ ์ด๋ฆ„์„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
print('ํƒ€๊นƒ์˜ ์ด๋ฆ„: ', iris_dataset['target_names'])

# feature_names์˜ ๊ฐ’์€ ๊ฐ ํŠน์„ฑ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ
print('ํŠน์„ฑ์˜ ์ด๋ฆ„: \n', iris_dataset['feature_names'])

# data๋Š” ๊ฝƒ์žŽ์˜ ๊ธธ์ด์™€ ํญ, ๊ฝƒ๋ฐ›์นจ์˜ ๊ธธ์ด์™€ ํญ์„ ์ˆ˜์น˜ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Numpy ๋ฐฐ์—ด
print('data์˜ ํƒ€์ž…:',  type(iris_dataset['data']))

# data ๋ฐฐ์—ด์˜ ํ–‰์€ ๊ฐœ๊ฐœ์˜ ๊ฝƒ์ด ๋˜๋ฉฐ ์—ด์€ ๊ฐ ๊ฝƒ์—์„œ ๊ตฌํ•œ ๋„ค ๊ฐœ์˜ ์ธก์ •์น˜
print('data์˜ ํฌ๊ธฐ:', iris_dataset['data'].shape)

~~>
ํƒ€๊นƒ์˜ ์ด๋ฆ„:  ['setosa' 'versicolor' 'virginica']
ํŠน์„ฑ์˜ ์ด๋ฆ„: 
 ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
data์˜ ํƒ€์ž…: <class 'numpy.ndarray'>
data์˜ ํฌ๊ธฐ: (150, 4)

๐Ÿ’ก ์ด ๋ฐฐ์—ด์€ 150๊ฐœ์˜ ๋ถ“๊ฝƒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
๋จธ์‹ ๋Ÿฌ๋‹์—์„œ ๊ฐ ์•„์ดํ…œ์€ ์ƒ˜ํ”Œ์ด๋ผ ํ•˜๊ณ  ํŠน์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

print('data์˜ ์ฒ˜์Œ ๋‹ค์„ฏ ํ–‰: \n', iris_dataset['data'][:5])

~~>
data์˜ ์ฒ˜์Œ ๋‹ค์„ฏ ํ–‰: 
 [[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]

๐Ÿ‘‰ ์ด ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๋ถ“๊ฝƒ์˜ ๊ฝƒ์žŽ ํญ์€ ๋ชจ๋‘ 0.2cm์ด๊ณ , ์ฒซ ๋ฒˆ์งธ ๊ฝƒ์ด ๊ฐ€์žฅ ๊ธด 5.1cm์˜ ๊ฝƒ ๋ฐ›์นจ์„ ๊ฐ€์กŒ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

# target ๋ฐฐ์—ด๋„ ์ƒ˜ํ”Œ ๋ถ—๊ฝƒ์˜ ํ’ˆ์ข…์„ ๋‹ด์€ Numpy ๋ฐฐ์—ด
print('target์˜ ํƒ€์ž…:', type(iris_dataset['target']))

# target์€ ๊ฐ ์›์†Œ๊ฐ€ ๋ถ“๊ฝƒ ํ•˜๋‚˜์— ํ•ด๋‹นํ•˜๋Š” 1์ฐจ์› ๋ฐฐ์—ด
print('target์˜ ํฌ๊ธฐ:', iris_dataset['target'].shape)

# ๋ถ“๊ฝƒ์˜ ์ข…๋ฅ˜๋Š” 0์—์„œ 2๊นŒ์ง€์˜ ์ •์ˆ˜๋กœ ๊ธฐ๋ก
print('ํƒ€๊นƒ:\n', iris_dataset['target'])

~~>
target์˜ ํƒ€์ž…: <class 'numpy.ndarray'>
target์˜ ํฌ๊ธฐ: (150,)
ํƒ€๊นƒ:
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

1.3.2. ์„ฑ๊ณผ ์ธก์ •: ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์™€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ

  • ๋ชจ๋ธ์˜ ์˜ˆ์ธก์„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‰๊ฐ€ ๋ชฉ์ ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฅ˜ํ•ด์•ผํ•œ๋‹ค.
  • ๋ชจ๋ธ์„ ๋งŒ๋“ค ๋•Œ ์“ด ๋ฐ์ดํ„ฐ๋Š” ํ‰๊ฐ€ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค
    - ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•  ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ ํ˜น์€ ํ›ˆ๋ จ ์„ธํŠธ
    • ๋ชจ๋ธ์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ์ธก์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ, ํ…Œ์ŠคํŠธ ์„ธํŠธ ํ˜น์€ ํ™€๋“œ์•„์›ƒ ์„ธํŠธ
  • scikit-learn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” train_test_split ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)

print('x_train ํฌ๊ธฐ:', x_train.shape)
print('y_train ํฌ๊ธฐ:', y_train.shape)
~~> 
x_train ํฌ๊ธฐ: (112, 4)
y_train ํฌ๊ธฐ: (112,)

print('x_test ํฌ๊ธฐ:', x_test.shape)
print('y_test ํฌ๊ธฐ:', y_test.shape)

~~>
x_test ํฌ๊ธฐ: (38, 4)
y_test ํฌ๊ธฐ: (38,)

1.3.3. ๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ: ๋ฐ์ดํ„ฐ ์‚ดํŽด๋ณด๊ธฐ

  • ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ธฐ ์ „์— ๋จธ์‹ ๋Ÿฌ๋‹์ด ์—†์ด๋„ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์•„๋‹Œ์ง€, ํ˜น์€ ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๋ˆ„๋ฝ๋˜์ง€๋Š” ์•Š์•˜๋Š”์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์‚ฌํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

    • ๋น„์ •์ƒ์ ์ธ ๊ฐ’์ด๋‚˜ ํŠน์ดํ•œ ๊ฐ’์„ ์ฐพ์„ ์ˆ˜๋„ ์žˆ๊ณ 
    • ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€๋Š” ์„ผํ‹ฐ๋ฏธํ„ฐ๊ฐ€ ์•„๋‹ˆ๊ณ  ์ธ์น˜๋กœ ๋˜์–ด์žˆ์„ ์ˆ˜ ์žˆ๋‹ค
    • ๋ฐ์ดํ„ฐ์— ์ผ๊ด€์„ฑ์ด ์—†๊ฑฐ๋‚˜ ์ด์ƒํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์‚ฐ์ ๋„(scatter plot) ์‹œ๊ฐํ™”๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  • ํ•˜์ง€๋งŒ ๊ทธ๋ž˜ํ”„๋กœ๋Š” 3๊ฐœ ์ด์ƒ์˜ ํŠน์„ฑ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์‚ฐ์ ๋„ ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

import pandas as pd

# x_train ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ๋งŒ๋“ ๋‹ค.
# ์—ด์˜ ์ด๋ฆ„์€ iris_dataset.feature_names์— ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉ
iris_dataframe = pd.DataFrame(x_train, columns=iris_dataset.feature_names)

# ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉํ•ด y_train์— ๋”ฐ๋ผ ์ƒ‰์œผ๋กœ ๊ตฌ๋ถ„๋œ ์‚ฐ์ ๋„ ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o',
                          hist_kwds={'bins':20}, s=60, alpha=.8, cmap=mglearn.cm3)
~~>

1.3.4. ์ฒซ ๋ฒˆ์งธ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ: K-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ๋Œ€ํ•œ ์˜ˆ์ธก์ด ํ•„์š”ํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ƒˆ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์ฐพ๋Š”๋‹ค.
  • ๊ทธ ํ›„ ์ฐพ์€ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์˜ ๋ ˆ์ด๋ธ”์„ ์ƒˆ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์˜ ๋ ˆ์ด๋ธ”๋กœ ์ง€์ •ํ•œ๋‹ค.
  • K-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ K๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ด์›ƒ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์—์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด K๊ฐœ์˜ ์ด์›ƒ์„ ์ฐพ๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค.
from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors=1)

knn.fit(x_train, y_train)

fit ๋ฉ”์„œ๋“œ๋Š” knn ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ knn ๊ฐ์ฒด๊ฐ€ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋จ
๊ฑฐ์˜ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด๊ณ  n_neighbors-1์€ ์ž„์˜๋กœ ์ง€์ •ํ•œ ๊ฐ’

1.3.5. ์˜ˆ์ธกํ•˜๊ธฐ

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

    ์ž„์˜์˜ ๋ถ“๊ฝƒ์„ ์„ค์ •

    • ๊ฝƒ๋ฐ›์นจ์˜ ๊ธธ์ด๊ฐ€ 5cm, ํญ์ด 2.9cm
    • ๊ฝƒ์žŽ์˜ ๊ธธ์ด๊ฐ€ 1cm, ํญ์ด 0.2cm
import numpy as np 

# ์ธก์ •๊ฐ’์„ Numpy ๋ฐฐ์—ด, ์ƒ˜ํ”Œ์˜ ์ˆ˜(1)์— ํŠน์„ฑ์˜ ์ˆ˜(4)๋ฅผ ๊ณฑํ•œ ํฌ๊ธฐ์ธ ๋ฐฐ์—ด๋กœ ์ƒ์„ฑ
x_new = np.array([[5, 2.9, 1, 0.2]])
print('x_new.shape:', x_new.shape)

~~>
x_new.shape: (1, 4)
# predict ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ถ“๊ฝƒ ํ’ˆ์ข…์„ ์˜ˆ์ธก
prediction = knn.predict(x_new)

print('์˜ˆ์ธก:', prediction)
print('์˜ˆ์ธกํ•œ ํƒ€๊นƒ์˜ ์ด๋ฆ„:', iris_dataset['target_names'][prediction])

~~>
์˜ˆ์ธก: [0]
์˜ˆ์ธกํ•œ ํƒ€๊นƒ์˜ ์ด๋ฆ„: ['setosa']

โœจโœจ ๋ชจ๋ธ์€ setosa ํ’ˆ์ข…์œผ๋กœ ์˜ˆ์ธก์„ ํ–ˆ์ง€๋งŒ ๋ชจ๋ธ์ด ์ •ํ™•ํ•œ ํŒ๋‹จ์„ ํ•œ ๊ฒƒ์ธ์ง€ ์•„์ง ์•Œ ์ˆ˜ ์—†๋‹ค.

1.3.6. ๋ชจ๋ธ ํ‰๊ฐ€ํ•˜๊ธฐ

  • ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์— ์žˆ๋Š” ๋ถ“๊ฝƒ์˜ ํ’ˆ์ข…์„ ์˜ˆ์ธกํ•˜๊ณ  ์‹ค์ œ ํ’ˆ์ข…๊ณผ ๋น„๊ตํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ถ“๊ฝƒ ํ’ˆ์ข…์„ ๋งž๋Š” ๋‹ต์œผ๋กœ ์˜ˆ์ธกํ–ˆ๋Š”์ง€ ์ •ํ™•๋„๋ฅผ ๊ณ„์‚ฐํ•ด ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•œ๋‹ค.
y_pred = knn.predict(x_test)
print('ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ ์˜ˆ์ธก๊ฐ’: \n', y_pred)

print('ํ…Œ์ŠคํŠธ ์„ธํŠธ์˜ ์ •ํ™•๋„: {:.2f}'.format(np.mean(y_pred == y_test)))

# knn ๊ฐ์ฒด์˜ score ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•œ ์ •ํ™•๋„ ๊ณ„์‚ฐ
print('ํ…Œ์ŠคํŠธ ์„ธํŠธ์˜ ์ •ํ™•๋„: {:.2f}'.format(knn.score(x_test, y_test)))

~~>
ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ ์˜ˆ์ธก๊ฐ’: 
 [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0
 2]
ํ…Œ์ŠคํŠธ ์„ธํŠธ์˜ ์ •ํ™•๋„: 0.97
ํ…Œ์ŠคํŠธ ์„ธํŠธ์˜ ์ •ํ™•๋„: 0.97
profile
data science!!, data analyst!! ///// hello world

0๊ฐœ์˜ ๋Œ“๊ธ€