일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 데이터분석
- 미니프로젝트
- It
- 오답노트
- 짧은생각
- 인프라
- 정보화
- 판다스
- deeplearning
- 자기개발
- MachineLearning
- 파이썬
- 딥러닝
- IT인프라
- DX컨설턴트
- 데이터다루기
- 데이터분석가
- 데이터프레임
- 넘파이
- 머신러닝
- 프로젝트
- 데이터다듬기
- 교육
- 데이터
- 아키텍처
- KT에이블스쿨
- 파이썬기초
- KT에이블스쿨5기
- 구조
- 데이터분석기초
- Today
- Total
꾸준히 성장하기
[D+36] 교육 | 머신러닝: 개요와 데이터 전처리 본문
오늘은 머신러닝 5일간의 여정이 시작되었습니다. 갓장래 강사님이 돌아오셨습니다!!(너무 그리웠어요)
머신러닝의 전체적인 개요와 함께, 모델의 성능을 좌우하는 결정적인 요소 중 하나인 '데이터 전처리'에 대해 이야기해보려고 합니다.
머신러닝 모델의 성능은 얼마나 효과적으로 데이터를 전처리하고, 특히 결측치를 어떻게 처리하느냐에 크게 달려있는데요,
이 주제는 과거에도 한 번 다룬 적이 있습니다. 하지만 중요한 내용인 만큼 복습 차원에서 다시 한번 정리해보고자 합니다.
여러분도 이번 기회에 얼마나 잘 기억하고 있는지 체크해보세요!🌟
1. 머신러닝 개요
1) 분류
머신러닝은 데이터를 기반으로 패턴을 학습하고 예측하는 알고리즘의 집합입니다.
여기서 중요한 점은, 데이터 전처리의 중요성입니다. 코드는 복붙해서 사용해도 좋다고 하시더라구요.
반면, 딥러닝에서는 영상이나 이미지 등의 전처리가 상대적으로 더 복잡하여, 코드 작성의 정교함이 중요해집니다.
머신러닝 학습 방법은 크게 세 가지로 분류됩니다.
지도 학습: 레이블이 있는 데이터를 사용해 규칙성이나 패턴을 학습하는 방법입니다. 예를 들어, 회귀문제나 분류문제가 여기에 해당합니다.
비지도 학습: 정답이 없는 데이터를 사용하여 데이터 내의 구조나 패턴을 찾아내는 학습 방법입니다. 클러스터링이 대표적인 예입니다.
강화학습: 선택한 행동에 대한 보상을 통해 행동을 개선해 나가는 학습 방법입니다.
2. 데이터 전처리
1) 결측치가 있는 여러 열 동시 제거하기
분석에 필요하지 않은 열들은 우리의 모델 성능을 향상시키기 위해 제거하는 것이 좋습니다.
# 여러 열 동시 제거 방법 1
drop_cols = ['Cabin', 'PassengerId', 'Name', 'Ticket']
titanic.drop(drop_cols, axis=1, inplace=True)
# 여러 열 동시 제거 방법 2
drop_cols = ['Cabin', 'PassengerId', 'Name', 'Ticket']
titanic = titanic.drop(drop_cols, axis=1)
# 여러 열 동시 제거 방법 3
drop_cols = ['Cabin', 'PassengerId', 'Name', 'Ticket']
titanic.drop(columns=drop_cols, inplace=True)
위 코드는 Cabin, PassengerId, Name, Ticket 열을 데이터셋에서 제거합니다.
inplace=True 옵션은 해당 DataFrame에 직접 변경을 적용하겠다는 의미입니다.
2) 결측치가 있는 행 또는 열 제거
결측치가 포함된 행이나 열을 제거하는 것은 데이터 전처리 과정에서 매우 중요한 단계입니다.
# NaN이 포함된 모든 행(axis=0) 제거
titanic.dropna(axis=0, inplace=True)
# Age 변수에 NaN이 포함된 행 제거
titanic.dropna(subset=['Age'], axis=0, inplace=True)
# NaN 열이 포함된 모든 변수(axis=1) 제거
titanic.dropna(axis=1, inplace=True)
3) 결측치 채우기
결측치를 제거하는 대신, 이를 다른 값으로 채우는 것이 종종 더 바람직할 수 있습니다.
예를 들어, Age 열의 결측치를 평균값으로 채우는 방법은 다음과 같습니다.
# Age 평균 구하기
mean_age = titanic['Age'].mean()
# NaN을 평균값으로 채우기
titanic['Age'].fillna(mean_age, inplace=True)
또는, 더 정교한 방법으로 Pclass 별 Age 평균을 계산하여 결측치를 채울 수 있습니다.
# Pclass 별 Age 평균 구하기
titanic['Age'].fillna(titanic.groupby('Pclass')['Age'].transform('mean'), inplace=True)
4) 가변수(One-Hot Encoding)
모델이 문자열 값을 직접 처리할 수 없으므로, 범주형 변수를 숫자형으로 변환하는 One-Hot Encoding은 필수적입니다.
titanic 데이터셋에서는 다음과 같이 One-Hot Encoding을 적용할 수 있습니다.
# 가변수 대상 변수 식별
dumm_cols = ['Pclass', 'Sex', 'Embarked']
# 가변수화
titanic = pd.get_dummies(titanic, columns=dumm_cols, drop_first=True, dtype=int)
이 방법을 통해, 범주형 변수가 모델이 이해할 수 있는 형태로 변환됩니다.
데이터 전처리는 데이터 분석과 머신러닝에서 매우 중요한 단계입니다.
오늘 소개한 방법들을 통해, 데이터의 질을 향상시키고, 모델의 성능을 최적화하는 방향으로 한 걸음 더 나아갈 수 있습니다.
내일은 더 심화된 내용으로 다시 찾아뵙겠습니다👍
'KT 에이블스쿨 5기 > 교육' 카테고리의 다른 글
[D+38] 교육 | 머신러닝: 분류 모델 성능 평가 (0) | 2024.03.29 |
---|---|
[D+37] 교육 | 머신러닝: 회귀 모델 성능 평가 (0) | 2024.03.28 |
[D+35] 교육 | .melt() 메서드(with Power BI) (0) | 2024.03.26 |
[D+34] 교육 | 데이터 분석 표현, Streamlit (0) | 2024.03.25 |
[D+27] 교육 | 데이터 크롤링의 기본과 접근 방법(정적 페이지 크롤링) (0) | 2024.03.18 |