본문 바로가기
개발노트/머신러닝

[머신러닝] 데이터 전처리 개념과 예제 #1

by 전지적진영시점 2023. 3. 12.
반응형

개발 환경

---------------------------------

OS : Mac

개발 툴 : colab 

개발 언어 : python

---------------------------------

 

올바른 결과 도출을 위해서 데이터를 사용하기 전에 데이터 전처리 과정을 거쳐야한다.

 

데이터 전처리란

데이터를 분석 및 처리에 적합한 형태로 만드는 과정을 총칭한다.

 

데이터 전처리 단계

데이터 수집 – > 데이터 정제 -> 데이터 통합 -> 데이터 축소 -> 데이터 변환의 가정을 거치게 된다.

 

데이터 전처리를 해야하는 이유

대부분의 머신러닝 알고리즘은 특성의 스케일이 다르면 잘 작동하지 않는다.

특히 알고리즘이 거리기반일 때는 올바르게 예측하기가 어렵다.

 

k-최근접 이웃 알고리즘도 마찬가지이다. 이런 알고리즘은 샘플 간의 거리에 영향을 많이 받으므로 제대로 사용하려면

특성값을 일정한 기준으로 맞춰줘야 한다.

 

이런 작업을 데이터 전처리라고 한다.

 

데이터 전처리 방법

 

가장 널리 사용되는 데이터 전처리 방법 중 하나는 표준 점수이다. (z 점수라고도 불림)

표준점수는 각 특성값이 표준편차의 몇 배만큼 떨어져 있는지를 나타낸다.

이를 통해 실제 특성값의 크기와 상관없이 동일한 조건으로 비교할 수 있다.

 

*표준편차 : 분산의 제곱근으로 데이터가 분산된 정도

*표준점수 : 각 데이터가 원점에서 몇 표준편차만큼 떨어져 있는지를 나타내는 값

 

 

 

-----------------------------------------------------------------------

 

import numpy as np
from sklearn.model_selection import train_test_split

fish_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 
                31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 
                35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0, 9.8, 
                10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]
fish_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 
                500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 
                700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0, 6.7, 
                7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]

fish_data = np.column_stack((fish_length, fish_weight))

fish_target = np.concatenate((np.ones(35), np.zeros(14)))

train_input, test_input, train_target, test_target = train_test_split(fish_data, fish_target, stratify=fish_target, random_state = 42)

 

위 코드는 지도학습을 위해

빙어와 도미의 길이와 무게가 데이터를 준비하여

입력 데이터와 타깃 데이터, 훈련 데이터와 테스트 데이터로 분류한 것이다.

 

 

**** 잠시 !

** train_test_split 함수는 전달되는 리스트나 배열을 비율에 맞게 훈련 세트와 테스트 세트로 나누어준다.
    random_state 매개변수를 사용하여 random seed를 설정할 수 있으며
    stratify 매개변수에 타깃 데이터를 전달하면 클래스 비율에 맞게 데이터를 나누어준다.

    훈련 데이터가 작거나 특정 클래스의 샘플 개수가 적을 때 특히 유용하다.

 

다음 포스팅에서는 표준편차와 표준점수를 계산하고 전처리 모델로 데이터를 훈련해볼 것이다.

 

https://link.coupang.com/a/Rzrh2

 

Apple 2023 맥북 프로 14 M2

COUPANG

www.coupang.com

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

 

https://www.buymeacoffee.com/jinyyyyleeG

 

cloi

Are you sure? Switching to a new level will terminate your current membership. You will no longer have access to this level or its rewards.

www.buymeacoffee.com

 

반응형

댓글