| 메서드 | 하는 일 | 사용 시기 |
|---|
fit() | 데이터를 보고 학습(파라미터 저장) | 처음 학습할 때 |
transform() | 저장한 파라미터로 변환만 함 | 이미 fit된 후, 새로운 데이터 변환 시 |
fit_transform() | fit + transform 한 번에 실행 | 처음 데이터 변환 시 빠르게 처리할 때 |
예제 1: PolynomialFeatures
from sklearn.preprocessing import PolynomialFeatures
X = [[2, 3]]
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
fit()은 어떤 조합 항들을 만들어야 할지 규칙(차수, 변수 수 등)을 파악
transform()은 그 규칙에 따라 실제 값을 계산
- 그래서
fit_transform()으로 한 번에 처리 가능 (→ 전처리에서는 주로 많이 씀)
예제 2: 모델 학습 (예: LinearRegression)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
fit()은 모델이 가중치 학습하는 과정
transform()은 없음 (회귀 모델은 변환하는 게 아니라 예측만 함)
- 따라서 이 경우엔
fit()만 사용하고, 나중에 *predict()를 씁니다
전처리기 vs 모델 비교 요약
| 타입 | 예시 | fit() 필요? | transform() 있음? | fit_transform() 사용? |
|---|
| 전처리기 | PolynomialFeatures, StandardScaler | ✅ 예 (파라미터 학습) | ✅ 예 (변환용) | ✅ 보통 사용 |
| 모델 | LinearRegression, LogisticRegression, SVC | ✅ 예 (가중치 학습) | ❌ 없음 | ❌ 사용 안 함 |
자주 쓰는 전처리기 정리
| 클래스 | 설명 | fit 필요? | transform 있음? |
|---|
PolynomialFeatures | 다항 특성 생성 | ✅ | ✅ |
StandardScaler | 평균 0, 표준편차 1 정규화 | ✅ | ✅ |
MinMaxScaler | 0~1 스케일링 | ✅ | ✅ |
PCA | 차원 축소 | ✅ | ✅ |
OneHotEncoder | 범주형 인코딩 | ✅ | ✅ |
이 전처리기들은 fit → transform이 필요하기 때문에,
fit_transform()을 자주 사용합니다.
정리 요약
| 질문 | 답변 |
|---|
fit()은 언제? | 데이터를 보고 규칙(평균, 차수 등)을 학습할 때 |
transform()은 언제? | 학습된 규칙으로 변환할 때 |
fit_transform()은 언제? | 둘 다 처음에 한 번에 처리하고 싶을 때 |
| 모델은? | 주로 fit()만 하고, 나중엔 predict()만 함 |