[혼공머신] 2-1. 훈련 세트와 테스트 세트

성준혁·2023년 1월 3일
0

혼공머신

목록 보기
4/21
post-thumbnail

Intro.

김 팀장🗣️"근데, 네가 훈련할 때 쓴 데이터로 평가를 하면 당연히 정확도가 100% 나오는 거 아냐...?"
ㅇ ㅁㅇ ....

1. 모델 개선 1회차

데이터 준비 및 알고리즘 객체 생성

  • 여기까진 이전 수업 때와 동일

훈련세트와 테스트세트 분할

  • 김팀장 말을 듣고, 테스트 세트 떼어내야겠다 싶어 슬라이싱 사용함.

그런데 ...

  • 뭐야, 왜 정확도가 0이 되어버린 거냐고!

2. Feedback

원인은 바로,

"샘플링 편향"

  • 애초에 데이터 합칠 때 순서대로 이어붙여놓고 그걸 그대로 35번째에서 자르면, 훈련은 도미로만 하고 평가는 빙어로 하게 되잖아;;;
  • 테스트세트 떼어내기 전에 샘플들을 골고루 섞었어야지!

그래서 해답은,

"섞자, 넘파이로!"

  • numpy : 고차원 배열을 손쉽게 조작할 수 있는 라이브러리 (⭐74p)
  • 파이썬 리스트를 넘파이 배열로 바꾸려면 .array() 함수 사용
  • .shape : 배열의 크기를 알려주는 옵션. (몇 행, 몇 열)인지 알려줌.

3. 모델 개선 2회차

넘파이 활용하여 샘플 골고루 섞기

🗝️Key Idea🗝️ "인덱스를 섞어버리자"
= 섞긴 섞어야 하는데, 입력과 타깃이 쌍으로 묶여 있어야 함.
= 그러니 샘플마다 인덱스 부여하고, 아예 그 인덱스를 섞으면 됨!

  • np.arange(k) : 0부터 k-1까지, 1씩 증가하는 배열을 만드는 함수.
  • .shuffle() : random 패키지 속 함수로, 전달 받은 리스트를 섞는 역할.

섞은 인덱스로 훈련/테스트 세트 다시 뽑기

  • ➕배열 인덱싱 개념 이해해야 함.
  • 잘 섞였는지 산점도로 확인.

4. 개선된 모델 평가

모델 훈련 및 평가

  • 마찬가지 방식으로 훈련(fit) 및 평가(score)

새로운 데이터에도 적용해보기

  • 확인 사살.

➕플러스 알파

➊ 배열 인덱싱

  • numpy에서는 여러 개의 인덱스로, 여러 개의 원소를 한 번에 부를 수 있다.
  • 특히, 아래처럼 뽑으려는 원소의 범위가 연속적이지 않을 때 유용하다.
import numpy as np

a = np.array([5, 6, 7, 8]) #여기서 6와 8을 한 번에 뽑고 싶다면
a[[1, 3]]				   #이렇게 리스트 속 리스트로 배열 인덱싱을 활용해라
----------------------------------------------------------------------
array([6, 8])			   #그럼 결과가 이렇게 나온다

➋ shuffle()

  • random 패키지의 함수로, 주어진 배열을 랜덤하게 섞어준다.
  • 아래처럼 다차원 배열일 경우, 첫 번째 축(행)에 대해서만 섞는다는 걸 알아두자.
example = np.array([ [1,2], [3,4], [5,6] ])
np.random.shuffle(example)
print(example)
---------------------------------------------------
[[3 4]
 [5 6]
 [1 2]] #즉, 안에 내용물까지는 안 섞어준다는 거임.


🤔 Hmmmm...

2차원 배열에서 인덱싱 하는 것(75p)과, 여러 개를 한 번에 인덱싱 하는 것(77p)이 헷갈리기 쉬운 것 같다. 기억하자. 핵심은 [ ]의 개수다! 🆗

🤓 To wrap up...

훈련했던 데이터로 그 모델을 평가하면 정확한 성능 측정이 안 됨 → 훈련세트와 테스트세트로 분할 → 정확도가 0이 되어버림 → 알고보니, 안 섞고 그냥 잘라서 그랬음 → 넘파이를 활용해 배열을 섞고 다시 분할 → 정확도 100으로 돌아옴!

제대로 된 알고리즘 모델을 만들기 위해, 훈련세트와 테스트세트를 나누어 평가하는 것을 배웠다. Kmooc <데이터로 배우는 통계학>에서 스치듯이 들었던 내용인데, 기억이 나니까 그래도 기분이 좋은 것 같다. 넘파이가 정말 중요한 놈이라는 게 벌써부터 느껴진다. 더 공부해야지...

profile
생각은 그만

0개의 댓글