1. 데이터 전처리 입문
1.1 데이터 전처리
데이터 전처리는 머신러능 모델 학습을 시작하기 전에 수행되는 데이터 준비과정입니다.
이 과정에는 누락된 값 처리, 데이터 정규화, 이상치 처리, 데이터 변환, 노이즈 제거 등 다양한 방법이 있습니다.
데이터 전처리 과정을 통해 정제된 데이터를 얻을 수 있고 모델의 예측 정확도와 일반화 능력을 향상시킬 수 있습니다.
1.2 데이터 전처리 주의사항
데이터를 너무 많이 제거하거나 변형시킬 경우 중요한 정보가 손실될 수 있습니다.
전처리 과정을 일관되게 적용하지 않을 경우 데이터의 품질을 떨어뜨릴 수 있습니다.
2. 결측치
2.1 결측치
결측치는 데이터셋에서 값이 누락된 항목을 의미하는데, 데이터가 수집되거나 저장과정 중에 제대로 기록되지 않아 발생합니다.
결측치는 데이터 분석과 모델의 성능에 영향을 미치기 떄문에, 정확한 분석을 위해서는 이를 식별하고 적절하게 처리하는 것이 중요합니다.
2.2 결측치 탐지 방법
방법1. isnull().sum() : 각 열별로 결측치의 개수가 합산됩니다.
import pandas as pd
train = pd.read_csv('train.csv')
train.isnull().sum()
index 0
gender 0
car 0
reality 0
child_num 0
income_total 0
income_type 0
edu_type 0
family_type 0
house_type 0
days_birth 0
days_employed 0
flag_mobil 0
work_phone 0
phone 0
email 0
job_type 321
family_size 0
begin_month 0
credit 0
dtype: int64
방법2. boxplot() : 상자 수염 그림의 상자 바깥의 부분은 일반적으로 이상치를 나타냅니다. 그러나, 결측치를 임의의 값으로 대체한 값을 의미할 수도 있습니다.
import seaborn as sns
import matplotlib.pyplot as plt
ax = sns.boxplot(train['days_employed'])
plt.show()
train[train['days_employed'] > 350000]
days_employed(업무시작일) 값이 양수가 나올수가 없는데 365243이라는 일관된 값이 나온것을 보면, 이는 결측치가 365243이라는 값으로 변환되었다고 볼 수 있습니다.
3. 결측치 처리
3.1 범주형 데이터 결측치를 최빈값으로 대체
# job_type 칼럼의 최빈값 찾기
mode_value = train['job_type'].mode()[0]
mode_value
'Laborers'
# 결측치를 최빈값으로 대체합니다.
train['job_type'] = train['job_type'].fillna(mode_value)
train.isnull().sum()
3.2 수치형 데이터 결측치를 평균값으로 대체
결측치 처리를 간편하게 수행하기 위해 days_employed 값이 365243인 경우 결측치로 처리합니다.
# 단계 1
train.loc[train['days_employed'] == 365243, 'days_employed'] = pd.NA
train.isnull().sum()
index 0
gender 0
car 0
reality 0
child_num 0
income_total 0
income_type 0
edu_type 0
family_type 0
house_type 0
days_birth 0
days_employed 180
flag_mobil 0
work_phone 0
phone 0
email 0
job_type 0
family_size 0
begin_month 0
credit 0
dtype: int64
결측치를 평균값으로 대체합니다.
# 단계 2
mean_value = train['days_employed'].mean()
train['days_employed'] = train['days_employed'].fillna(mean_value)
train.isnull().sum()
index 0
gender 0
car 0
reality 0
child_num 0
income_total 0
income_type 0
edu_type 0
family_type 0
house_type 0
days_birth 0
days_employed 0
flag_mobil 0
work_phone 0
phone 0
email 0
job_type 0
family_size 0
begin_month 0
credit 0
dtype: int64
'머신러닝 > 머신러닝: 기초 내용' 카테고리의 다른 글
데이터 불균형 (0) | 2024.12.15 |
---|---|
피처 엔지니어링 입문 (2) | 2024.12.14 |
다변량 이상치 (0) | 2024.12.13 |
단변량 이상치 (0) | 2024.12.12 |
머신러닝 입문 (2) | 2024.12.10 |