k최근접 이웃은 가장 근접한 거리에 있는 대상을 이용하여 입력 데이터의 성질을 예측하는 것입니다. 가장 가까이 있는 대상의 성질이 A이면, 입력한 데이터의 성질도 A로 예측하는 것입니다. 몇개의 대상을 이용할지만 정해주면 됩니다. 5개의 대상을 이용한다고 하면 5개의 대상이 가장 많이 갖고 있는 성질로 입력 데이터의 성질을 예측합니다.
사이킷런에서 제공하는 iris 데이터를 이용하여 k최근접이웃이라는 머신러닝을 해볼 것입니다. iris 는 붓꽃이라는 뜻입니다. 이 데이터는 아래 네가지 독립변수를 갖습니다.
- 꽃잎 폭
- 꽃잎 길이
- 꽃받침 폭
- 꽃받침 길이
종속변수는 붓꽃의 종입니다. setosa, versicolor, virginica 세가지 입니다. 독립변수는 수치형 데이터이고, 종속변수는 범주형 데이터입니다. 데이터를 표로 나타내면 아래와 같습니다.
꽃잎 폭 | 꽃잎 길이 | 꽃받침 폭 | 꽃받침 길이 | 붓꽃 종 |
5.1 | 3.5 | 1.4 | 0.2 | setosa |
... | ||||
... |
독립변수를 입력하면 어떤 종류의 붓꽃인지 분류해주는 모델을 만들 것입니다.
오늘은 첫시간입니다. 데이터를 불러오고, 불러온 데이터를 살펴보겠습니다. 사이킷런이 설치되지 않은 분들은 cmd 창에 아래 명령어를 입력하여 사이킷런을 설치합시다.
pip install sklearn
iris 데이터를 불러와서 md 라는 변수에 넣어줍시다.
from sklearn.datasets import load_iris
md=load_iris() #key:value 형태의 bunch 클래스, 딕셔너리와 비슷함
iris 데이터는 bunch 라는 클래스로 되어 있습니다. bunch 클래스는 딕셔너리와 유사합니다. 딕셔너리는 key:value 쌍으로 이루어진 데이터입니다. iris 데이터의 key를 불러오면 아래와 같습니다.
# >>> md.keys()
# dict_keys(['data', 'target', 'frame',
# 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
먼저 feature_names 와 data 를 불러와봅시다. 데이터는 4개의 열과 150개의 행으로 되어 있습니다. 각 열은 sepal length, sepal width, patal length, patal width 를 뜻합니다.
# >>> md.feature_names
# ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
# >>> md.data[:5]
# array([[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]])
# >>> md.data.shape
# (150, 4)
target_names와 target 을 불러와봅시다. 붓꽃의 종 데이터입니다.
# >>> md.target_names
# array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
# >>> md.target
# array([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])
<참고문헌>
https://link.coupang.com/a/kHGzo
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'머신러닝 (지도학습) > k최근접 이웃' 카테고리의 다른 글
[파이썬 머신러닝, k최근접 이웃] 4. 모델 학습과 평가 (0) | 2022.03.24 |
---|---|
[파이썬 머신러닝, k최근접 이웃] 3. 산점도행렬 그려보기 (0) | 2022.03.17 |
[파이썬 머신러닝, k최근접 이웃] 2. 트레이닝셋, 테스트셋 나누기 (0) | 2022.03.12 |
댓글