[AI] 데이터 정제하기

2026. 2. 4. 20:59·AI/Machine Learning
반응형

들어가며

이번에는 데이터를 정제하는 과정에 대해 알아볼 것이다

데이터 정제란 데이터가 누락되거나 중복되거나 이상값을 포함할 때 이를 찾아 수정하거나 제거하는 과정이다

이 과정이 이루어지지 않으면 분석 결과가 왜곡되거나 모델 성능이 저하할 수 있다

이번에는 그 중 누락된 값이 있을 때 어떻게 처리할 지 알아볼 것이다

기본적이지만 필수적인 과정인 것이다

 

누락된 값 정제

대부분 머신러닝 알고리즘은 누락된 특성을 다루지 못하므로 이를 처리해주어야 한다

처리하는 방법으로는 3가지 정도가 있다

 

1. 해당 구역을 제거한다

housing.dropna(subset=["total_bedrooms"], inplace=True)

이 방법은 값이 비어있는 행만 제거하는 것이다

2번째 방법과 같이 비교하면서 보면 이해가 쉬울 것이다

 

2. 전체 특성을 제거한다

housing.drop("total_bedrooms", axis=1)

이 방법은 아예 열 자체를 삭제시키는 것이다

즉 위의 예시대로라면 total_bedrooms 이라는 특성을 삭제시켜 아예 사용하지 않겠다는 것이다

1번의 방법은 열은 그대로 두지만 비어있는 값이 있는 행만 없애는 것이다

 

3. 누락된 값을 어떤 값으로 채운다

median = housing["total_bedrooms"].median()
housing["total_bedrooms"].fillna(median, inplace=True)

이 방법은 누락된 값을 0이나 평균,중간값 등으로 대체하는 방법이다

주로 이 방법이 데이터를 최대한 유지하므로 자주 선택된다

위의 코드는 median 즉 중간값을 대체값으로 사용한 것을 볼 수 있다

 

사이킷런 통한 데이터 정제

위의 코드대로 누락된 값을 정제해도 되지만

사이킷런에서 SimpleImputer 클래스를 제공하여 데이터를 편하게 정제하도록 도와준다

from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy="median")
housing_num = housing.select_dtypes(include=[np.number])
imputer.fit(housing_num)
X = imputer.transform(housing_num)

 

우선 SimpleImputer 객체를 생성해야 한다

이 클래스는 strategy 매개변수를 활용하여 어떤 값으로 채울 지 정할 수 있다

 

중간값은 수치형 특성에서만 계산되기 때문에 수치 특성만 가진 데이터를 따로 빼주어야 한다

그 후 fit()을 하여 객체가 훈련 데이터를 학습하도록 한다

이 과정에서 중간값이 학습되는 것이다

마지막으로 transform()을 통해 누락된 값을 학습된 중간값으로 대체한다

 

strategy 매개변수는 median 외에도 최빈수(most_frequent), 상수("constant") 등으로 설정 가능하다

 

마치며

이번 글에서는 누락된 값을 어떻게 처리하는 지에 대한 데이터 정제에 대해 다뤄보았다

개념 자체는 이해하기 쉽고 구현도 쉬운 편에 속하는 것 같았다

하지만 매우 중요한 부분이여서 등한 시하면 큰 문제로 이어질 수 있으니 주의해야한다

다음 번에는 텍스트형 데이터를 어떻게 다루는 지에 대하여 알아 볼 것이다

반응형

'AI > Machine Learning' 카테고리의 다른 글

[AI] 특성 스케일링(정규화, 표준화)  (0) 2026.02.07
[AI] 텍스트 특성 다루기  (1) 2026.02.06
[AI] 테스트 세트 만들기  (0) 2026.02.03
[AI] 홀드아웃 검증(holdout validation), 교차 검증(cross-validation)  (0) 2026.01.21
[AI] 과대 적합(overfitting), 과소 적합(underfitting)  (1) 2026.01.21
'AI/Machine Learning' 카테고리의 다른 글
  • [AI] 특성 스케일링(정규화, 표준화)
  • [AI] 텍스트 특성 다루기
  • [AI] 테스트 세트 만들기
  • [AI] 홀드아웃 검증(holdout validation), 교차 검증(cross-validation)
20puddle
20puddle
20puddle 님의 블로그 입니다.
  • 20puddle
    20puddle 님의 블로그
    20puddle
  • 전체
    오늘
    어제
    • 분류 전체보기 (100)
      • Spring boot (5)
      • git & github (5)
      • algorithm (47)
        • theory (3)
        • 배열 (7)
        • 연결 리스트 (3)
        • 스택 (5)
        • 큐 (3)
        • 덱 (2)
        • 기초 코드 (19)
        • BFS (5)
      • AI (43)
        • Machine Learning (35)
        • Deep Learning (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ML
    게시판
    머신러닝
    AI
    홀드아웃 검증
    Spring Boot
    github
    Java
    git
    Aimers
    연결리스트
    list
    딥러닝
    주성분변환
    인공지능
    오프라인 학습
    알고리즘
    백준
    DL
    그레디언트 클리핑
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
20puddle
[AI] 데이터 정제하기
상단으로

티스토리툴바