머신러닝(Machine Learning) 전반전 - 탐색적 데이터 분석(EDA) 실습

728x90
반응형
머신러닝 전반전
탐색적 데이터 분석(EDA): 데이터 파악 → 데이터 전처리: 결측치, 이상치 수정
→ 데이터 인코딩: 데이터 변환 → 데이터 스케일링: 데이터 정규화

 

데이터를 살펴보기 위한 탐색적 데이터 분석(EDA)

 

 

서론

 

탐색적 데이터 분석(Exploratory Data Analysis, EDA)는 데이터 분석의 첫 걸음으로, 복잡한 데이터 세트를 이해하는 데 도움이 되는 방법입니다. 이 방법은 데이터의 주요 특성, 패턴, 예외, 그리고 변수 간의 관계를 밝혀내는 데 중점을 둡니다. 이 과정은 시각화, 통계적 테스트, 그리고 기술 통계량(평균, 중앙값, 표준편차 등)을 통해 이루어집니다.

 

EDA의 주요 목표는 데이터를 '탐색'하는 것입니다. 이는 데이터의 구조와 패턴을 이해하고, 이상치나 에러를 식별하며, 가설을 수립하고, 데이터 분석의 방향을 결정하는 데 도움이 됩니다. EDA는 데이터 과학자에게 데이터와 그것이 지니는 정보를 이해하고, 적절한 모델을 선택하고, 파라미터를 조정하는 데 필요한 통찰력을 제공합니다. 또한, EDA는 데이터의 복잡성과 구조를 이해하는 데 도움이 되며, 이는 효과적인 모델링 전략을 수립하는 데 중요한 역할을 합니다. 따라서, EDA는 모든 데이터 분석 프로젝트의 필수적인 단계이며, 이를 통해 데이터에 대한 깊은 이해를 얻고, 더 효과적인 모델링 전략을 수립할 수 있습니다. 이 글에서는 EDA의 중요성을 이해하고, 실제 코드를 통해 머신러닝(Machine Learning) 전반전 - 탐색적 데이터 분석(EDA) 실습을 수행하는 방법에 대해 알아보겠습니다.

 

이 글에서는 다음과 같은 순서로 탐색적 데이터 분석(EDA)를 진행하도록 하겠습니다.

데이터의 행과 열의 갯수 확인 → 피처별 데이터 갯수 확인 피처별 결측치 갯수 확인 수치형 피처의 기본적인 통계치 확인 카테고리형 피처의 카테고리별 갯수 확인 피처별 상관계수 확인 수치형 피처의 이상치 확인

 

*EDA에 대한 자세한 내용은 아래 글을 참조하시기를 바랍니다.*

https://10yp.tistory.com/38

 

머신러닝(Machine Learning)의 절차와 이해 - 탐색적 데이터 분석(Exploratory Data Analysis, EDA)

서론 머신러닝(Machine Learning)의 절차와 이해 - 탐색적 데이터 분석(Exploratory Data Analysis, EDA)에 대해 다뤄보겠습니다. 머신러닝을 위해서는 어떤 문제를 해결할 것인지와 그에 적합한 데이터들을

10yp.tistory.com

 

절차

 

1. 데이터 로딩 및 기본 정보 확인 - 데이터를 로딩하고, 데이터의 행과 열의 개수를 확인합니다. 

import pandas as pd
df = pd.read_csv('data.csv')  # 데이터 로딩, 데이터가 다른 폴더에 있을 시 경로까지 추가하여야합니다.
print(df)

 

▼ 코드 실행시 화면 예시 ▼

kaggle의 타이타닉 생존자 예측 데이터 셋을 사용하였습니다.

print(df.shape) #데이터의 행과 열의 개수 출력

 

▼ 코드 실행시 화면 예시 ▼

 

print(df.shape) 실행 결과, (행,열)


2. 피쳐 개수 확인 - 각 피쳐의 데이터 타입과 null이 아닌 값의 개수를 확인합니다.

df.info()

 

▼ 코드 실행시 화면 예시 ▼

 

df.info() 실행 결과. 피처명 / 데이터 개수 / 데이터 타입


3. 결측치 확인 - 각 피쳐의 결측치 개수를 확인합니다.

df.isnull().sum()

 

▼ 코드 실행시 화면 예시 ▼

 

df.isnull().sum() 실행 결과. 피처별 결측치 갯수. 해당 결과 데이터의 타입은 int64

 


4. 통계치 확인 - 수치형 피쳐의 중심 경향성, 분산 등의 기본적인 통계치를 확인합니다.

df.describe()

 

▼ 코드 실행시 화면 예시 ▼

 

df.describe() 실행 결과. 피처별 데이터 갯수, 평균값, 표준편차, 최소값, 4분위수, 최대값

 


 5. 카테고리 피쳐의 고유값 확인 - 카테고리형 피쳐의 고유값과 각 고유값의 개수를 확인합니다.

df['category_feature'].value_counts() #'category_feature'에는 카테고리형 피처명 하나를 넣습니다.

 

▼ 코드 실행시 화면 예시 ▼

 

df["Embarked"].value_counts() 실행 결과. Embarked 피처에 있는 데이터명별 갯수

 


6. 피쳐 간 상관관계 확인 - 피쳐 간의 상관계수를 확인합니다.

df.corr()

 

▼ 코드 실행시 화면 예시 ▼

 

df.corr() 실행 결과 예시

 

`df.corr()`은 데이터프레임 내에서 수치형 피쳐들 간의 상관계수를 계산해주는 함수입니다. 이 함수의 결과는 각 피쳐들 간의 상관관계를 나타내는 상관행렬(Correlation Matrix)입니다. 상관계수는 -1부터 1까지의 값을 가지며, 이 값이 1에 가까울수록 두 피쳐 간의 양의 상관관계가 강하다는 것을, -1에 가까울수록 음의 상관관계가 강하다는 것을 의미합니다. 0에 가까운 값은 두 피쳐 간에 상관관계가 거의 없음을 나타냅니다.

 

위 결과에서의 경우, 'Age'와 'Fare' 사이의 상관계수는 -0.091로, 둘 사이에는 약한 음의 상관관계가 있다고 볼 수 있습니다. 즉, 'Age'가 증가하면 'Fare'는 약간 감소하는 경향이 있습니다. 반면, 'Fare'와 'Survived' 사이의 상관계수는 0.257로, 둘 사이에는 약한 양의 상관관계가 있습니다. 즉, 'Fare'가 증가하면 'Survived'도 약간 증가하는 경향이 있습니다. 다만, 이러한 상관계수는 두 피쳐 간의 관계가 선형적이라는 가정하에 계산된 것이므로, 실제 데이터의 패턴이 비선형적일 경우에는 상관계수만으로는 두 피쳐의 관계를 완전히 이해하는 데 한계가 있을 수 있습니다. 이 경우에는 시각화 등 다른 방법을 통해 데이터를 추가적으로 탐색해야 합니다.


7. 시각화를 통한 데이터 탐색 - seaborn, matplotlib 등의 라이브러리를 이용해 데이터를 시각화하고 분포, 이상치 등을 확인합니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.boxplot(x=df['numeric_feature']) #'numeric_feature' 자리에는 숫자 형태의 피처명이 들어가야합니다.
plt.show()

 

▼ 코드 실행시 화면 예시 ▼

 

df["Fare"]에 대한 코드 실행 결과. 데이터가 쏠려있으며, 이상치가 많다.

 

Boxplot 이해를 위한 그림

 

Boxplot, 즉 상자 수염 그래프는 데이터의 분포와 이상치를 파악하기 좋은 시각화 도구입니다. 상자 수염 그래프는 아래와 같은 구성 요소로 이루어져 있습니다.

 

- 상자: 상자는 데이터의 1사분위수(Q1)에서 3사분위수(Q3)까지의 범위, 즉 IQR(Interquartile Range)을 나타냅니다. 상자 내부의 선은 중앙값(Median)을 나타냅니다.

- 수염(Whisker): 수염은 상자 외부의 데이터 범위를 나타냅니다. 일반적으로 아래 수염은 `Q1 - 1.5 * IQR`까지, 위 수염은 `Q3 + 1.5 * IQR`까지의 범위를 나타냅니다.

- 점: 점은 수염 밖에 위치한 이상치를 나타냅니다. 이상치는 일반적으로 `Q1 - 1.5 * IQR` 미만이거나 `Q3 + 1.5 * IQR` 초과하는 값을 가지는 데이터를 의미합니다. 따라서 Boxplot을 통해 데이터의 중앙값, IQR, 이상치 등을 한 눈에 파악할 수 있습니다. 이를 통해 데이터의 분포, 이상치 등에 대한 인사이트를 얻을 수 있습니다.

 

이러한 단계를 거쳐 데이터를 탐색하면, 데이터의 전반적인 구조와 특성, 문제점 등을 파악할 수 있습니다. 이후 이를 바탕으로 데이터 전처리 및 모델링 전략을 수립할 수 있습니다.

 

결론

 

머신러닝(Machine Learning) 전반전 - 탐색적 데이터 분석(EDA) 실습을 진행하였습니다. 탐색적 데이터 분석(EDA)은 데이터 과학 프로젝트의 핵심 요소로, 데이터를 깊이 이해하는 데 필수적인 단계입니다. 이 글을 통해 EDA의 중요성과 그것이 우리의 데이터 분석과 모델링 전략에 어떻게 영향을 미치는지에 대해 알아보았습니다. 우리는 데이터의 특성과 구조를 파악하고, 이상치를 식별하며, 변수 간의 관계를 이해하는 등, 데이터에 대한 깊은 통찰력을 얻기 위해 EDA를 수행했습니다.

 

이러한 과정을 통해, 우리는 데이터에 숨겨진 정보를 발견하고, 이를 바탕으로 더 정확한 가설을 수립하고, 효과적인 모델링 전략을 개발할 수 있었습니다. 결국, EDA는 데이터 분석의 시작과 끝, 그리고 그 사이의 모든 단계에서 중요한 역할을 합니다. 이는 단순히 데이터를 '보는' 것을 넘어, 데이터를 '이해하고', '탐색하고', '분석하는' 과정을 포함합니다. 이러한 과정을 거치면서, 우리는 데이터의 본질을 이해하고, 그것이 지니는 가치를 최대한 활용할 수 있습니다.

 

이 글을 통해, 여러분도 EDA의 힘을 이해하고, 이를 실제 데이터 분석 프로젝트에 적용하는 방법에 대해 알게 되었기를 바랍니다.

 

반응형