개발 환경
---------------------------------
OS : Mac
개발 툴 : colab
개발 언어 : python
---------------------------------
이번 포스팅에서는 K-최근접 이웃 알고리즘 예제다.
아래 링크는 K-최근접 이웃 알고리즘 개념이다.
한번 읽고 예제를 보는 것이 도움될 것 같다.
https://jpointofviewntoe.tistory.com/127
이번 포스팅을 포함하여 한동안은 사이킷 런 패키지에 대한 글을 다룰것이다.
k-최근접 이웃 알고리즘은 사이킷런 패키지에서 구현한 KNeighborClassifier 클래스이다.
1. KNeighborClassifier 클래스를 import한다.
from sklearn.neighbors import KNeighborsClassifier
2. 데이터를 준비한다.
도미와 빙어의 길이와 무게의 데이터이다.
bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0,
31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0,
35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0]
bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0,
500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0,
700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]
smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]
smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]
빙어 데이터와 도미 데이터를 합쳐서 fish_data를 만들자
먼저 도미, 빙어의 길이 데이터와 도미, 빙어의 무게 데이터를 만들거다.
weight = bream_weight + smelt_weight
length = bream_length + smelt_length
사이킷 런 패키지를 사용하려면 각 특성의 리스트를 세로 방향으로 늘어뜨린 2차원 리스트가 필요하다.
zip() 함수를 사용하여 각 리스트에서 요소 한개씩 뽑아 [l, w]가 하나의 원소로 구성되는 리스트를 만든다.
fish_data = [[l,w] for l, w in zip(length,weight)]
다음 fish_target을 만든다.
fish_target 데이터는 정답 데이터이다. 지금 만드는 모델이 생선의 길이와 무게를 보고 도미와 빙어를 구분하는 규칙을 찾기 위해서는
뭐가 도미이고 뭐가 빙어인지는 알려줘야한다.
나는 도미를 찾아낼거니까 도미는 1, 빙어 0으로 가겠다.
fish_target = [1] * 35 + [0] * 14
3. KNeighborClassifier 클래스의 객체를 만들자
kn = KNeighborsClassifier()
이 객체에 fish_data와 fish_target을 전달하여 도미를 찾아내기위한 학습을 시킬거다.
이를 머신러닝에서는 훈련이라고 부르며 fit() 메서드가 이 역할을 해줄것이다.
4. 훈련
fit 메서드로 훈련후 score 메서드를 통해 얼마나 잘 훈련되었는지 평가한다.
0에서 1 사이의 값을 리턴하며 1이면 데이터를 정확히 맞혔다는거다.
kn.fit(fish_data, fish_target)
kn.score(fish_data, fish_target)
5. 데이터 예측
predict 메서드는 새로운 데이터의 정답을 예측한다.
길이 30 무게 600 데이터를 넣어보겠다.
kn.predict([[30,600]])
결과는 도미다, 맞췄다 !
array([1])
https://www.buymeacoffee.com/jinyyyyleeG
'개발노트 > 머신러닝' 카테고리의 다른 글
[머신러닝] 데이터 전처리 개념과 예제 #1 (0) | 2023.03.12 |
---|---|
[python] np.random.seed 란? (0) | 2023.03.11 |
K-최근접 이웃 알고리즘 개념 정리하기 (0) | 2023.03.10 |
[머신러닝] 머신러닝에 대한 개념보기 (0) | 2023.03.09 |
[머신러닝] 맷플롯립 (matplotlib) 사용하기 (0) | 2023.03.09 |
댓글