hyeori
누락된 데이터 다루기 본문
NAN : 숫자가 아니다 (not a number)
NULL : 관계형 데이터베이스에서 모르는 값을 지칭
4.1.1 테이블 형태 데이터에서 누락된 값 식별
df.isnull().sum() #누락된 값의 개수를 얻을 수 있다.
4.1.2 누락된 값이 있는 훈련 샘플이나 특성 제외
- 해당 훈련 행이나 열 삭제
df.dropna(axis = 0) # 누락된 값이 있는 행 삭제
df.dropna(axis = 1) # NaN이 하나라도 있는 열 삭제 가능
df.dropna(how = 'all') # 모든 열이 Nan일 때만 행을 삭제
df.dropna(thresh=4) # NaN이 아닌 값이 4개 보다 작은 행 삭제
df.dropna(subset = ['C']) # 특정 열에 NaN이 있는 행만 삭제
4.1.3 누락된 값 대체
- 평균으로 대체하기 → SimpleImputer사용
# 행의 평균으로 누락된 값 대체하기
from sklearn.impute import SimpleImputer
import numpy as np
imr = SimpleImputer(missing_values=np.nan, strategy='mean') # 평균
imr = imr.fit(df.values)
imputed_data = imr.transform(df.values)
imputed_data
- 행 방향으로 대체할 값을 계산하려면, FunctionTransformer 사용
- SimpleImputer 클래스의 add_indicator = True 로 지정하면, indicator_ 속성이 추가되고, transform 메서드가 누락된 값의 위치를 포함된 배열 반환
- fit_transform 메서드를 호출하면 features_ 속성에 담긴 특성에서 누락된 값의 위치를 나타내는 배열 반환
- 누락된 값을 채우는 더 쉬운 방법, pandas 의 fillna
df.fillna(df.mean()) # 평균값으로 누락된 값을 대체 가능
- bfill 또는 backfill 은 누락된 값을 다음 행의 값으로 채운다.
- ffill 또는 pad는 누락된 값을 이전 행의 값으로 채운다.
df.fillna(method='bfill') # backfill
df.fillna(method = 'ffill') # pad
df.fillna(method = 'ffill', axis = 1) # 열을 사용
4.1.4 사이킷런 추정 API 익히기
SimpleImputer 클래스 : 데이터 변환에 사용되는 사이킷런의 변환기(transformer) 클래스
- fit : 훈련 데이터에서 모델 파라미터를 학습한다.
- transform : 학습한 파라미터로 데이터를 변환
- 변환하려는 데이터 배열은 모델 학습에 사용한 데이터의 특성 개수와 같아야 한다.
'머신러닝' 카테고리의 다른 글
데이터셋을 훈련 데이터셋과 테스트 데이터 셋으로 나누기 (0) | 2024.05.08 |
---|---|
범주형 데이터 다루기 (0) | 2024.05.08 |
적응형 선형 뉴런과 학습의 수렴 (0) | 2024.05.08 |
파이썬으로 퍼셉트론 학습 알고리즘 구현 (0) | 2024.05.08 |
인공 뉴런 : 초기 머신 러닝의 간단한 역사 (1) | 2024.05.08 |