S05L02 – 결측 데이터 처리

Python에서 누락된 데이터 처리: Scikit-Learn의 SimpleImputer를 활용한 종합 가이드

목차

  1. 누락된 데이터 이해하기
  2. 누락된 데이터 처리 전략
    1. 1. 행 또는 열 제거
    2. 2. 누락된 값 대체
  3. Scikit-Learn의 SimpleImputer 사용하기
    1. 단계별 구현
  4. 최고의 실천 방법 및 고려사항
  5. 결론

누락된 데이터 이해하기

누락된 데이터는 데이터셋에서 특정 특성에 대한 값이 없는 것을 나타내며, 데이터 레코드에서 NaN (Not a Number)으로 자주 표현됩니다. 이러한 공백을 적절히 처리하는 것은 데이터 분석 및 머신러닝 모델의 무결성과 신뢰성을 보장하는 데 필수적입니다.

누락된 데이터의 유형

  1. 무작위로 완전히 누락됨 (MCAR): 데이터가 누락될 가능성이 데이터셋의 다른 변수와 무관합니다.
  2. 무작위로 누락됨 (MAR): 누락이 관측된 데이터와는 관련이 있지만, 누락된 데이터 자체와는 관련이 없습니다.
  3. 무작위가 아니게 누락됨 (MNAR):strong>누락이 누락된 데이터 자체와 관련이 있습니다.

누락된 데이터의 유형을 이해하면 이를 처리하기 위한 적절한 전략을 안내할 수 있습니다.

누락된 데이터 처리 전략

누락된 데이터를 해결하기 위한 여러 가지 전략이 있으며, 각 전략에는 장단점이 있습니다. 전략의 선택은 누락된 데이터의 특성과 정도에 따라 달라집니다.

1. 행 또는 열 제거

단순한 접근 방식 중 하나는 누락된 값을 포함하는 데이터 항목(행)이나 전체 특성(열)을 제거하는 것입니다.

  • 행 제거: 누락된 데이터의 비율이 작고 다양한 레코드에 걸쳐 분산되어 있을 때 적합합니다.
    • 장점:
      • 데이터셋을 단순화합니다.
      • 대체를 통한 바이어스를 방지합니다.
    • 단점:
      • 유용한 정보를 잠재적으로 폐기할 수 있습니다.
      • 데이터의 상당 부분이 누락된 경우 이상적이지 않습니다.
  • 열 제거: 전체 특성이 높은 비율로 누락된 경우 적용할 수 있습니다.
    • 장점:
      • 데이터 복잡성을 줄입니다.
    • 단점:
      • 잠재적으로 중요한 특성을 잃을 수 있습니다.

예시 시나리오: “나이”와 같은 특성이 20% 이상 누락된 경우, 이 특성이 분석에 중요하지 않다면 제거하는 것이 현명할 수 있습니다.

2. 누락된 값 대체

누락된 데이터를 폐기하는 대신, 대체는 다른 사용 가능한 데이터를 기반으로 누락된 값을 타당한 추정치로 채우는 것을 포함합니다.

일반적인 대체 방법에는 다음이 포함됩니다:

  • 평균 대체: 누락된 값을 사용 가능한 값의 평균으로 대체합니다.
  • 중앙값 대체: 이상치에 더 강건한 중앙값을 사용합니다.
  • 최빈값 대체: 누락된 범주형 데이터를 가장 빈번한 값으로 채웁니다.
  • 상수 값 대체: 0이나 특정 값과 같은 특정 값을 할당합니다.

대체는 데이터셋의 크기를 유지하며, 특히 누락된 데이터가 최소한일 때 모델 성능을 향상시킬 수 있습니다.


Scikit-Learn의 SimpleImputer 사용하기

Scikit-Learn은 누락된 데이터를 효율적으로 처리할 수 있는 강력한 도구인 SimpleImputer 클래스를 제공합니다. 다양한 대체 전략에 대한 간단한 인터페이스를 제공합니다.

단계별 구현

SimpleImputer를 사용하여 누락된 데이터를 처리하는 예제를 살펴보겠습니다.

**1. 환경 설정**

필요한 라이브러리가 설치되어 있는지 확인하십시오. 설치되지 않은 경우 pip를 사용하여 설치할 수 있습니다:

참고: openpyxl 라이브러리는 Pandas로 Excel 파일을 읽기 위해 필요합니다.

**2. 라이브러리 가져오기**

**3. 데이터 로드하기**

이 예제에서는 샘플 데이터셋을 생성합니다. 실제로는 pd.read_excel 또는 pd.read_csv를 사용하여 데이터셋을 로드합니다.

출력:

**4. 누락된 값 식별하기**

데이터셋에서 Height, Weight, Age에 누락된 값이 NaN으로 표시되어 있습니다.

**5. 대체 전략 선택하기**

수치 특성(Height, Weight, Age)에는 평균 전략을 사용합니다. 범주형 특성(Gender)에는 가장 빈번한 전략이 적합합니다.

**6. 수치 특성에 대한 대체 구현**

출력:

설명: 여기서 누락된 HeightAge 값은 각 열의 평균으로 대체됩니다. 예를 들어, 누락된 Height은 \( (165 + 180 + 175) / 3 = 173.333 \)으로 대체됩니다(간단성을 위해 170으로 반올림됨).

**7. 범주형 특성에 대한 대체 구현**

출력:

설명: 이 예제에서는 Gender 열에 누락된 값이 없었지만, MostFrequent 전략을 적용하면 향후 누락된 범주형 데이터가 해당 열의 최빈값으로 채워집니다.

**8. 최종 데이터프레임**

대체 후, 데이터프레임은 누락된 값이 없어져 모델링에 적합하게 됩니다.

출력:

최고의 실천 방법 및 고려사항

  1. 데이터 이해하기: 대체 전략을 결정하기 전에 데이터의 특성과 분포를 분석하십시오. 시각화와 통계 요약이 이를 이해하는 데 도움이 될 수 있습니다.
  2. 데이터 무결성 유지: 바이어스를 도입하지 않도록 주의하십시오. 예를 들어, 평균 대체는 이상치가 있을 경우 데이터 분포를 왜곡할 수 있습니다.
  3. 필요에 따라 고급 대체 기법 사용: 더 복잡한 시나리오에서는 K-최근접 이웃(KNN) 대체나 모델 기반 대체와 같은 기법을 고려하십시오.
  4. 모델 성능 평가: 대체 후, 그것이 모델의 성능에 어떻게 영향을 미치는지 평가하십시오. 때로는 특정 대체 방법이 더 나은 예측 정확도를 가져올 수 있습니다.
  5. 전처리 파이프라인 자동화: 특히 대규모 데이터셋을 다루거나 모델을 배포할 때 일관성을 보장하기 위해 대체 단계를 데이터 전처리 파이프라인에 통합하십시오.

결론

누락된 데이터를 처리하는 것은 머신러닝 워크플로우에서 데이터 전처리의 필수적인 부분입니다. 데이터의 공백을 효과적으로 처리함으로써 분석 및 모델의 품질과 신뢰성을 향상시킬 수 있습니다. Python의 Scikit-Learn 라이브러리는 SimpleImputer 클래스를 통해 다양한 전략을 사용하여 누락된 값을 대체할 수 있는 강력하고 사용자 친화적인 접근 방식을 제공합니다. 불완전한 레코드를 제거하거나 통계적 측정값으로 누락된 값을 채우든, 각 방법의 의미를 이해하면 데이터가 의미 있고 실행 가능하게 유지됩니다.

이러한 기술을 활용하여 데이터셋의 무결성을 유지하고 데이터 과학 프로젝트의 성공을 이끌어 나가십시오.

Share your love