카테고리 없음

[혼공학습단 12기] 혼자 공부하는 머신러닝+딥러닝 2장 K-최근접 이웃 모델

민아당긴아 2024. 7. 7. 16:13

1-3. 마켓과 머신러닝(K-최근접 이웃 알고리즘)

코랩에 필기하면서 공부하니 편하고 좋았다.

K-최근접 이웃 모델은 근처에 있는 값들을 바탕으로 타겟값을 예측하는 모델이었다.

근처에 있는 값들 중 몇 개를 참고해서 예측할지는 n_neighbors 매개변수를 통해 결정할 수 있는데,

기본값은 n_neighbors = 5이다.

# 사이킷런 패키지에서 K-최근접 이웃 알고리즘 클래스 불러오기
from sklearn.neighbors import KNeighborsClassifier
# 클래스의 객체 만들기
kn = KNeighborsClassifier()
# 특성 데이터와 정답 데이터로 알고리즘 훈련하기
kn.fit(fish_data, fish_target)
# 정확도 계산을 통한 모델 평가
kn.score(fish_data, fish_target)
# 새로운 데이터의 정답 예측
kn.predict([[30, 600]])

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

모든 데이터를 훈련시키는 게 아니라, 일부만 훈련시켜야 한다. 

이 때 선택한 일부가 하나의 타겟으로 편향되어 있는 경우 샘플링 편향이 발생할 수 있으므로

랜덤화가 필요하다.

# numpy 라이브러리를 활용하여 훈련 세트를 임의로 섞기
np.random.seed(49) # 매번 다르게 섞으면 안되니까 랜덤시드 고정
index = np.arange(49)
np.random.shuffle(index)
print(index)
print(input_arr[[1,3]])

이런 과정을 통해 랜덤화를 진행하여 샘플링 편향이 발생하는 것을 막을 수 있다.

랜덤화 하기 전, 샘플링 편향 발생

이전에는 훈련 데이터에 도미 데이터만 들어가서 샘플링 편향이 발생했지만,

랜덤화를 거치고 나니 훈련 세트와 테스트 세트가 적절히 섞인 것을 볼 수 있다.

확인문제

마지막에 확인문제도 풀어봤는데, 엄청 쉽지만 보기좋게 틀려버렸다. ㅎㅎ

1. 1번

지도 학습은 입력과 타깃을 모두 알고있을 때 학습시키는 것이다. 즉, 정답을 알려주고 학습시키는 알고리즘을 '지도학습'이라고 한다.

2. 4번

샘플링 '편차'가 아니라 '편향'이다. 한쪽으로 치우친다는 뜻에서 '편향'이다.

3. 2번

사이킷런의 입력 데이터는 다음과 같은 구성으로 되어 있다.

특성1 특성2 특성2

그러니 정답은 ② 행:샘플 열: 특성