카테고리 없음
[혼공학습단 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 |
값 | 값 | 값 |
값 | 값 | 값 |
값 | 값 | 값 |
그러니 정답은 ② 행:샘플 열: 특성