강의자료/머신러닝

[캐글(Kaggle) 따라하기]05-2.KNN(K-최근접 이웃) 알고리즘2 - 실습하기

파아란 기쁨 2022. 12. 9. 09:31

지난시간(https://wondangcom.tistory.com/2356) 에 이어서 KNN 실습을 진행 합니다.

진행하기 전 먼저 지도학습과 비지도 학습에 대한 개념을 이해 하겠습니다.

 

1. 지도학습과 비지도 학습

지도학습이란?

지도학습에서는 입력(input)과 타깃(target)을 훈련데이터(training data)로 사용하는 학습 방법을 의미한다.

앞에서 살펴본 입력데이터는 길이와 무게를 특성(feature)로 사용하였고 빙어/도미 의 타깃을 주어 해당 특성이 어떤 데이터인지를 살펴 보았다.

비지도학습이란?

비지도 학습은 타깃이 주어지지 않고 입력데이터만 으로 훈련을 하는 학습 방법을 의미한다.

 

2. 훈련세트와 테스트 세트

다음으로 머신러닝을 훈련 하기 위해서는 훈련세트와 테스트 세트가 필요 합니다.

만약 시험을 보기 전에 출제 될 시험문제와 정답을 미리 알려 주고 그 안에서 문제를 선택해서 시험 문제를 출제한다고 하면 문제와 정답을 외우기만 하면 100점을 맞을 수 있습니다.

머신러닝의 지도학습은 이와 같은 형태입니다.

따라서 연습문제와 시험 문제가 달라야 합니다.

이렇게 하는 방법 중 간단한 방법은 주어진 데이터를 일부는 훈련데이터로 사용하고 일부는 테스트 데이터로 사용하는 것입니다.

지난 시간 준비한 데이터를 훈련세트와 테스트 세트로 나누어 훈련 하는 방법에 대해 살펴 보겠습니다.

#훈련데이터 35개 사용
train_input = fish_data[:35]
train_target = fish_target[:35]
#테스트 데이터 나머지 사용
test_input = fish_data[35:]
test_target = fish_target[35:]

이렇게 나누게 되면 문제가 생기지 않을까요?

지난번 도미데이터가 0~34까지 35개의 데이터 였고 나머지는 빙어 데이터 였는데 혹시 기억나시나요?

이렇게 나누게 되면 훈련 데이터는 모두 도미이고 테스트 데이터는 모두 빙어 데이터 이므로 테스트 하면 모두 도미로 인식 할 수 밖에 없습니다.

 

3. 샘플링편향

이렇게 데이터가 한쪽으로 치우치는 것을 샘플링 편향이라고 합니다.

이러한 샘플링 편향을 간단하게 해결 할 수 있는 방법이 있는데요 바로 사이킷런에서 제공하는 train_test_split() 함수입니다.

from sklearn.model_selection import train_test_split
train_input,test_input,train_target,test_target = train_test_split(fish_data,fish_target,stratify=fish_target)
print(test_target)

여기서 stratify=fish_target 매개변수를 이용해서 fish_target 을 이용하여 75 : 25 의 비율로 훈련데이터:테스트데이터 를 적절한 비율로 나누어 줍니다.

4. 최근접 이웃 알고리즘으로 머신러닝 훈련하기

최근접 이웃 알고리즘은 사이킷런에서 제공하는 KNeighborsClassifier 를 이용하여 다음과 같이 훈련을 할 수 있습니다.

from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
kn.fit(train_input,train_target) #fish_data 로 최근접 이웃 훈련
kn.score(test_input,test_target)

kn.score 는 test_input 데이터로 훈련된 모델을 통과하여 나온 예측값과 test_target의 실제 데이터의 값을 비교하여 점수를 출력 합니다.

정확도가 100% 인 것을 확인 할 수 있습니다.

 

 

 

 

 

참고]

혼자 공부하는 머신러닝

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기