[혼자 공부하는 머신러닝 + 딥러닝] 5강_정교한 결과 도출을 위한 데이터 전처리 알아보기

5강_정교한 결과 도출을 위한 데이터 전처리 알아보기


넘파이로 데이터 준비하기

  • column_stack()
    • 전달받은 리스트를 일렬로 세운 다음 차례대로 나란히 연결
  • 튜플
    • 리스트처럼 원소에 순서가 있지만 한 번 만들어진 튜플은 수정할 수 없음.
    • 매개변수 값으로 많이 사용.
  • np.ones() / np.zeros()
    • 각각 원하는 개수의 1과 0을 채운 배열을 만들어 줌. 
  • np.concatenate()
    • 첫 번째 차원을 따라 배열을 연결
  • 넘파이 배열은 핵심 부분이 C, C++과 같은 저수준 언어로 개발되어서 빠르고, 데이터 과학 분야에 알맞게 최적화 되어 있음.
    • 데이터가 클수록 파이썬 리스트는 비효율적이므로 넘파이 배열을 사용하는게 좋음.


사이킷런으로 훈련 세트와 테스트 세트 나누기

  • train_test_split()
    • 전달되는 리스트나 배열을 비율에 맞게 훈련 세트와 테스트 세트로 나누어줌 .
    • 섞어도 줌.
    • stratify 매개변수
      • 클래스 비율에 맞게 데이터를 나눔.
      • 훈련 데이터가 작거나 특정 클래스의 샘플 개수가 적을 때 특히 유용.
  • 넘파이 배열의 크기는 파이썬의 튜플로 표현됨.
    • 튜플의 원소가 하나면 원소 뒤에 콤마를 추가함.
  • 무작위로 데이터를 나누면 샘플링 편향이 나타날수있음.
    • 특히 일부 클래스의 개수가 적을 때


수상한 도미 한 마리

  • k-최근접 이웃 훈련
  • kneighbors()
    • 이웃까지의 거리와 이웃 샘플의 인덱스를 반환
  • indexes 배열
    • 훈련 데이터 중에서 이웃 샘플을 따로 구분해 그릴 수 있음.
  • X축 범위와 Y축 범위가 다르기 때문에 문제 발생


기준을 맞춰라

  • X축의 범위와 Y축의 범위 기준 맞추기
  • xlim() / ylim()
    • 범위 지정 함수
  • 스케일
    • 두 특성(길이와 무게)의 값이 놓인 범위가 매우 다름.
    • 데이터를 표현하는 기준이 다르면 알고리즘이 올바르게 예측할 수 없음.
  • 데이터 전처리
    • 제대로 사용하려면 특성값을 일정한 기준으로 맞춰 주어야 함. 
  • 표준함수 ( z 점수 )
    • 가장 널리 사용하는 전처리 방법 중 하나
    • 각 특성값이 평균에서 표준편차의 몇 배만큼 떨어져 있는지를 나타냄. 
      • 실제 특성값의 크기와 상관없이 동일한 조건으로 비교 가능
  • 표준점수와 표준편차
    • 분산은 데이터에서 평균을 뺀 값을 모두 제곱한 다음 평균을 내어 구함.
    • 표준편차는 분산의 제곱근으로 데이터가 분산된 정도를 나타냄
    • 표준점수는 각 데이터가 원점에서 몇 표준편차만큼 떨어져 있는지를 나타내는 값
  • np.mean() - 평균 / np.std() - 표준편차
  • 브로드캐스팅
    • 브로드캐스팅은 넘파이 배열 사이에서 일어남. 
    • train_input, mean, std가 모두 넘파이 배열. 


전처리 데이터로 모델 훈련하기

  • 훈련 세트의 mean, std를 이용해서 변환해야함.
  • 훈련 후 테스트 세트를 평가할 때는 훈련 세트의 기준으로 테스트 세트를 변환해야 같은 스케일로 산점도를 그릴 수 있음.
  • 목적: 특성값의 스케일에 민감하지 않고 안정적인 예측을 할 수 있는 모델을 만드는 것.


스케일이 다른 특성 처리 (문제 해결 과정)

  • 스케일이 다름
  • 이를 위해 특성을 표준점수로 변환
  • 전처리시 주의 사항
    • 훈련 세트를 변환한 방식 그대로 테스트 세트를 변환해야 함.


키워드로 끝나는 핵심 포인트

  • 데이터 전처리
    • 머신러닝 모델에 훈련 데이터를 주입하기 전에 가공하는 단계를 말함.
    • 때로는 데이터 전처리에 많은 시간이 소모되기도 함.
  • 표준점수
    • 훈련 세트의 스케일을 바꾸는 대표적인 방법 중 하나.
    • 표준점수를 얻으려면 특성의 평균을 빼고 표준편차로 나눔. 
    • 반드시 훈련 세트의 평균과 표준편차로 테스트 세트를 바꿔야 함.
  • 브로드캐스팅
    • 크기가 다른 넘파이 배열에서 자동으로 사칙 연산을 모든 행이나 열로 확장하여 수행하는 기능


핵심 패키지와 함수

  • scikit-learn
    • train_test_split()
      • 훈련 데이터를 훈련 세트와 테스트 세트로 나누는 함수.
      • 여러 개의 배열을 전달 할 수 있음.
      • 테스트 세트로 나눌 비율은 test_size 매개변수에서 지정할 수 있음 (기본값은 25%)
      • shuffle 매개변수로 세트를 나누기 전 무작위로 섞을지 여부를 결정 가능. 
      • stratify 매개변수는 클래스 비율에 세트를 나눔.
    • kneighbors()
      • k-최근접 이웃 객체의 매서드
      • 입력한 데이터에 가장 가까운 이웃을 찾아 거리와 이웃 샘플의 인덱스를 반환.
      • return_distance 매개변수를 False로 지정하면 이웃 샘플의 인덱스만 반환하고 거리는 반환하지 않음.

댓글

이 블로그의 인기 게시물

[혼자 공부하는 머신러닝 + 딥러닝] 17강_인공 신경망: 간단한 인공 신경망 모델 만들기

[솔트룩스] 새싹 인공지능 응용 SW 개발자 양성과정 | 24일차 | 5. 머신러닝 (2)

[혼자 공부하는 머신러닝 + 딥러닝] 10강_확률적 경사 하강법 알아보기