김 팀장🗣️ "농어의 무게 데이터가 56개 빼고 다 날아갔어... 길이 데이터는 있는데, 혹시 이것만 보고 농어의 무게를 예측하는 모델을 만들어 줄 수 있을까? 무게가 측정되어있는 샘플 56개를 메일로 보내줄게."
train_test_split()
함수로 간편하게 분할.reshape()
함수KNeighborsRegressor()
: 사이킷런 패키지의 'k-최근접 이웃 회귀 알고리즘'으로, 이웃 수치들의 평균으로 타깃값을 판단함.mean_absolute_error()
: 회귀모델 평가 시 자주 쓰는 지표 중 하나
- 과대적합 : 훈련세트 > 테스트세트
'훈련세트에만 잘 맞는 모델이라 새로운 샘플 예측하기 부적절할 수 있다'- 과소적합 : 훈련세트 < 테스트세트
'모델이 너무 단순하여 훈련세트에 적절히 훈련되지 않았다'
test_array = np.array( [1,2,3,4] ) # 크기가 (4, )인 배열을
test_array = test_array.reshape(2,2) # (2,2) 크기로 바꾸면
--------------------------------------------------------
[[1 2] # 이렇게 배열이 달라짐
[3 4]]
plot()
: x축과 y축의 값을 전달받아, 선 그래프를 그리는 함수118p. [1, 2, 3] 의 형태의 배열은 크기가 ( ,3)이 되어야하는 거 아닌가요? (3, )으로 하면 3행 1열이라는 뜻 아닌가요 ...?
그게 아니라, 튜플은 원소가 하나일 때 마지막에 콤마가 필요합니다.
1차원 배열은 하나의 숫자를 사용해 표현하며 파이썬은 이에 튜플을 사용합니다.⏯️ 그럼 (n,)로 되어있는 건 다 그냥 1차원 배열로 보면 되겠지..?
농어의 길이 데이터를 이용해 농어의 무게를 예측해야하는 상황 → (분류가 아니라) 수치를 예측해야 하는 거니까 회귀 모델을 사용 → 전에 썼던 'k-최근접 이웃'의 원리를 활용한 KNeighborsRegressor 클래스를 사용 → 회귀 모델의 성능은 결정계수 또는 평균 절댓값 오차로 확인 가능 → 이번엔 훈련세트의 성능까지 확인해봤는데, 테스트세트보다 더 낮게 나옴 = 과소적합 → 이웃의 개수(n_neighbors
)를 줄여서 해결!
이전까지는 분류만 가능한 간단한 모델이었는데, 오늘은 새로운 데이터를 예측할 수 있는 '회귀 모델'을 배웠다. 이전에 Kmooc랑 유튜브 뒤져가면서 '회귀분석'을 어느정도 이해해놨던 것이 도움이 돼서 기뻤다 ㅎㅎ '회귀선' '최소제곱법' 같은 기본 논리를 알고 보아야 이해가 쉬운 챕터인 것 같다. (결정계수도 마찬가지!) 예전에 '과적합'이라는 개념도 얼핏 들었었는데 그게 오늘 배운 과대/과소적합인 것 같다. 배움은 언제나 이렇게 알게 모르게 쌓여가는 것 같다. 더 열심히 하자!