[혼자 공부하는 머신러닝 + 딥러닝] 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로 지정하면 이웃 샘플의 인덱스만 반환하고 거리는 반환하지 않음.
댓글
댓글 쓰기