728x90
반응형
데이터를 분석에 사용할 수 있도록 정제(cleansing), 데이터 변환(transforming) 등을 거쳐서 모델링에 필요한 변수로 만드는 과정. 이상값 처리, 결측치 처리 등
https://blog.naver.com/seeyapangpang/222459509531
1. 데이터 정제
일반적으로 데이터 정제에서는 결측값(missing data) 또는 이상치(outlier)를 처리 및 데이터 인코딩을합니다.
✔ Nan,Null,None 값을 처리해야 한다.
# isna()로 결손 데이터 여부 확인
df.isna().sum()
#OR
df.isnull().sum()
# 1)DataFrame에서 결측값이 있는 샘플을 제거하기 위해서는 dropna를 사용합니다.
titanic_2 = titanic.dropna()
# 2)pandas의 DataFrame에서 특정 변수(columns)를 삭제하기 위해서는 drop사용합니다.
titanic_1 = titanic.drop(columns=['Cabin'])
# 3)의 경우 >> 평균값 OR 중앙값 OR 머신러닝으로 예측
✔ 이상치(Outlier)처리하기
모델의 성능을 저하할 수 있음.
이상치는 일반적으로 전 처리 과정에서 제거하며, 어떤 값이 이상치 인지 판단하는 기준이 중요함
- 통계 지표(카이제곱 검정, IQR지표 등)를 사용하여 판단
- 데이터 분포표를 보고 직접 판단
- 머신러닝 기법을 사용하여 이상치 분류
# (Age 값 - 내림 Age 값) 0 보다 크다면 소수점을 갖는 데이터로 분류합니다.
outlier = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']) > 0 ]['Age']
# 이상치를 처리하여 titanic_3에 넣으면
titanic_3 = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']) == 0 ]
✔ 중복값 확인 및 중복값 제거
df[df.duplicated(keep=False)]
drop_duplicates() 함수를 이용하여 중복값을 제거합니다.
print("Before:", len(df))
df = df.drop_duplicates()
print("After:", len(df))
---
Before: 1275
After: 1274
✔ Data encoding
- 입력 층에 들어갈 모든 문자열 값은 인코딩돼서 숫자 형으로 변환해야 합니다.
Data encoding (1. Label Encoding) > https://whatif-genie.tistory.com/69
Data encoding (2. One-hot Encoding) > https://whatif-genie.tistory.com/70
728x90
반응형
'Machine Learning & Data Analytics' 카테고리의 다른 글
Data encoding (2. One-hot Encoding) (0) | 2022.02.17 |
---|---|
Data encoding (1. Label Encoding) (0) | 2022.02.17 |
Exploratory Data Analysis (EDA)_1. Feature Distribution Visualization (0) | 2022.02.13 |
Machine Learning paradigms schematization (0) | 2022.02.13 |
Machine Learning (0) | 2022.02.13 |