007 setup() 함수 기본 이해
키워드: setup, 전처리, 기본
개요
setup() 함수는 PyCaret의 핵심입니다. 이 함수 하나로 데이터 전처리, 학습/테스트 분할, 특성 타입 추론 등 머신러닝 파이프라인의 기초를 자동으로 설정합니다. 이 글에서는 setup() 함수의 역할과 기본 사용법을 상세히 알아보겠습니다.
실습 환경
- Python 버전: 3.11 권장
- Python 3.11은 2027년 말까지 지원되며, PyCaret 호환 최신 버전입니다.
- 필요 패키지:
pycaret[full]>=3.0, pandas, matplotlib
pip install pycaret[full]>=3.0 pandas matplotlib
Google Colab 사용 불가 Google Colab은 2025년 8월부터 Python 3.12만 지원하여 PyCaret(3.8~3.11) 실습이 불가능합니다. 로컬 환경이나 Docker를 사용해 주세요.
setup() 함수란?
setup() 함수는 PyCaret 워크플로우의 첫 단계입니다. 이 함수가 수행하는 작업:
- 데이터 타입 추론: 수치형/범주형 자동 판별
- 결측치 처리: 자동 대체 (imputation)
- 인코딩: 범주형 변수 인코딩
- 데이터 분할: 학습/테스트 세트 분리
- 실험 환경 초기화: 랜덤 시드, 로깅 등 설정
기본 사용법
최소 필수 인자
from pycaret.classification import *
from pycaret.datasets import get_data
# 007 데이터 로드
data = get_data('titanic')
# 007 기본 setup
clf = setup(data=data, target='Survived')
실행 결과
setup() 실행 시 자동으로 데이터 분석 결과가 표시됩니다:
Description Value
0 Session id 42
1 Target Survived
2 Target type Binary
3 Original data shape (891, 12)
4 Transformed data shape (891, 12)
5 Transformed train set shape (623, 12)
6 Transformed test set shape (268, 12)
7 Numeric features 6
8 Categorical features 5
...
주요 파라미터
1. 필수 파라미터
clf = setup(
data=data, # DataFrame: 학습 데이터
target='Survived' # str: 타겟 컬럼명
)
2. 재현성 설정
clf = setup(
data=data,
target='Survived',
session_id=42 # 랜덤 시드 고정 (재현성 보장)
)
3. 데이터 분할 비율
clf = setup(
data=data,
target='Survived',
train_size=0.8, # 학습 데이터 80%, 테스트 20%
session_id=42
)
4. 출력 제어
clf = setup(
data=data,
target='Survived',
verbose=False, # 상세 출력 끄기
session_id=42
)
5. 특정 컬럼 무시
clf = setup(
data=data,
target='Survived',
ignore_features=['PassengerId', 'Name', 'Ticket'], # 학습에서 제외
session_id=42
)
자동 전처리 과정
1. 데이터 타입 추론
PyCaret은 컬럼의 값을 분석하여 자동으로 타입을 결정합니다:
clf = setup(data=data, target='Survived', session_id=42)
# 007 추론된 타입 확인
print(clf.pipeline)
추론 규칙:
- 숫자만 있으면 → 수치형 (Numeric)
- 문자열이 있으면 → 범주형 (Categorical)
- 고유 값이 많은 숫자 → 수치형
- 고유 값이 적은 숫자 → 범주형으로 처리 가능
2. 타입 수동 지정
자동 추론이 맞지 않을 때:
clf = setup(
data=data,
target='Survived',
categorical_features=['Pclass'], # 수치형이지만 범주형으로 처리
numeric_features=['Age'], # 명시적으로 수치형 지정
session_id=42
)
3. 결측치 자동 처리
# 007 기본 결측치 처리 (자동)
# 007 - 수치형: 평균(mean)으로 대체
# 007 - 범주형: 최빈값(mode)으로 대체
clf = setup(
data=data,
target='Survived',
session_id=42
)
4. 인코딩 자동 처리
범주형 변수는 자동으로 인코딩됩니다:
- One-Hot Encoding: 기본값
- Ordinal Encoding: 순서가 있는 범주
실전 예제: 타이타닉
from pycaret.classification import *
from pycaret.datasets import get_data
# 007 데이터 로드
data = get_data('titanic')
# 007 데이터 확인
print("원본 데이터:")
print(data.info())
print("\n결측치:")
print(data.isnull().sum())
# 007 setup 실행
clf = setup(
data=data,
target='Survived',
ignore_features=['PassengerId', 'Name', 'Ticket', 'Cabin'],
categorical_features=['Pclass'], # 숫자지만 범주형으로 처리
session_id=42,
verbose=True
)
# 007 setup 결과 확인
print("\nsetup 완료!")
print(f"학습 데이터: {clf.X_train.shape}")
print(f"테스트 데이터: {clf.X_test.shape}")
출력:
원본 데이터:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 891 non-null int64
1 Survived 891 non-null int64
2 Pclass 891 non-null int64
3 Name 891 non-null object
4 Sex 891 non-null object
5 Age 714 non-null float64 <- 결측치 있음
6 SibSp 891 non-null int64
7 Parch 891 non-null int64
8 Ticket 891 non-null object
9 Fare 891 non-null float64
10 Cabin 204 non-null object <- 결측치 많음
11 Embarked 889 non-null object <- 결측치 있음
결측치:
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
setup 완료!
학습 데이터: (623, 7)
테스트 데이터: (268, 7)
setup() 반환값 활용
setup()은 실험 객체를 반환합니다. 이를 통해 다양한 정보에 접근할 수 있습니다:
clf = setup(data=data, target='Survived', session_id=42)
# 007 전처리된 데이터 접근
X_train = clf.X_train
X_test = clf.X_test
y_train = clf.y_train
y_test = clf.y_test
# 007 데이터세트 정보
print(f"전체 특성: {clf.X.columns.tolist()}")
print(f"수치형 특성: {clf.numeric_features}")
print(f"범주형 특성: {clf.categorical_features}")
# 007 파이프라인 확인
print(clf.pipeline)
get_config()로 설정 확인
from pycaret.classification import get_config
# 007 현재 설정 확인
print(get_config('X_train').shape) # 학습 데이터 크기
print(get_config('y_train').shape) # 학습 타겟 크기
print(get_config('seed')) # 랜덤 시드
print(get_config('target_param')) # 타겟 컬럼명
모듈별 setup() 차이
모든 모듈의 setup()은 동일한 기본 구조를 갖지만, 일부 파라미터가 다릅니다:
분류 (Classification)
from pycaret.classification import setup
clf = setup(data, target='label')
회귀 (Regression)
from pycaret.regression import setup
reg = setup(data, target='price')
클러스터링 (Clustering)
from pycaret.clustering import setup
clust = setup(data) # 타겟 없음!
이상치 탐지 (Anomaly Detection)
from pycaret.anomaly import setup
ano = setup(data) # 타겟 없음!
시계열 (Time Series)
from pycaret.time_series import setup
ts = setup(data, target='sales', fh=12) # fh: 예측 기간
정리
setup()은 PyCaret 워크플로우의 필수 첫 단계입니다.- 데이터 타입 추론, 결측치 처리, 인코딩, 데이터 분할을 자동 수행합니다.
session_id를 설정하면 재현 가능한 실험이 됩니다.ignore_features로 불필요한 컬럼을 제외할 수 있습니다.categorical_features,numeric_features로 타입을 명시적으로 지정할 수 있습니다.
다음 글 예고
다음 글에서는 setup() 전처리 옵션 - 결측치 처리에 대해 알아보겠습니다. 다양한 결측치 대체 방법과 옵션을 상세히 다룹니다.
PyCaret 머신러닝 마스터 시리즈 #007