상세 컨텐츠

본문 제목

[혼공머] 1, 2장 k-최근접 이웃 알고리즘-분류, 회귀, 선형회귀

통계, ML 방법론

by eun_00 2024. 2. 21. 22:00

본문

출처: [혼자 공부하는 머신러닝+딥러닝] 책

https://www.yes24.com/Product/Goods/96024871?pid=123487&cosemkid=go16896688690567064&gad_source=1&gclid=CjwKCAiA29auBhBxEiwAnKcSqrlT1xCMHobS134uoUchSJfURYjnPKEBfvuhXFIvkc5HOKsweiOughoCt0MQAvD_BwE

 

혼자 공부하는 머신러닝+딥러닝 - 예스24

- 혼자 해도 충분하다! 1:1 과외하듯 배우는 인공지능 자습서 이 책은 수식과 이론으로 중무장한 머신러닝, 딥러닝 책에 지친 ‘독학하는 입문자’가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있

www.yes24.com


# 문제

수산시장에서 활용할 수 있도록 도미를 자동분류해준다.

생선은 도미 , 빙어가 있으며 도미를 예측해야한다. 

 

[접근방법] 

k-최근접 이웃 알고리즘을 활용한 이진 분류

k-최근접 이웃 알고리즘은 가장 가까운 데이터를 보고, 다수결의 원칙에 따라 데이터를 예측해준다. 

 

1. 도미, 빙어 피처를 파이썬 2차원 리스트로 만든다. 

2. 산점도를 통해 각 데이터 특성을 파악한다.

3. 사이킷런 패키지에서 k-최근접 이웃 알고리즘을 구현한 클래스 KNeighborsClassfier를 사용한다.

4. fit() 메서드로 훈련하고, score() 메서드로 모델 정확도를 평가해준다. 

 

[핵심 패키지 함수]

numpy

- seed()는 넘파이에서 난수를 생성하기 위한 정수 초깃값 지정한다. 

- arrange() 는 일정한 간격의 정수 또는 실수 배열을 만든다. 매개변수가 3개면 시작, 종료, 간격을 나타낸다.

- shuffle() 주어진 배열을 랜덤하게 섞는다. 


2. 

# 문제

농어의 길이로 무게를 예측해야한다.

 

[접근방법] 

k-최근접 이웃 알고리즘을 활용한 회귀 모델

k-최근접 이웃 회귀 알고리즘은 분류와 같이 가까운 샘플 k개를 선택하지만, 임의의 수치를 예측하기 위해서 평균을 사용한다. 

 

1. 도미, 빙어 피처를 넘파이 배열을 통해 2차원 배열로 만든다. 

reshape()

2. 산점도를 통해 각 데이터 특성을 파악한다.

matplotlib, scatter()

3. 훈련세트, 테스트세트로 분할한다.

train_test_split() 

4. 사이킷런 패키지에서 k-최근접 이웃 알고리즘을 구현한 클래스 KNeighborsRegressor를 사용한다.

4. fit() 메서드로 훈련하고, score() 메서드로 모델 성능을 평가해준다. 

 * 회귀에서 score() 점수는 결정계수를 나타낸다. 1에 가까울수록 좋다. 

 


k-최근접 이웃의 한계

k-최근접 이웃 알고리즘은 훈련 데이터 내에서 가장 가까운 이웃 샘플을 찾아 타깃을 평균하여 값을 예측한다.

따라서 예를들어 훈련데이터에 없는 엄청 큰 길이 농어를 예측하게 되면 그나마 가까운 이웃 샘플 평균값으로 무게를 구하게 되니, 그 값이 실제 값과 차이가 많이 날 수 있다.

이를 해결하기 위해선 가장 큰 농어가 포함되도록 훈련세트를 다시 만들어야한다. 


이를 해결하기 위한 다른 모델은 선형회귀모델이 있다.

선형회귀

관련글 더보기