In [1]모델 학습하기
from sklearn.ensemble import RandomForestClassifier
data_rf = RandomForestClassifier(
n_estimators=100,
max_depth=4,
random_state=42
)
data_rf.fit(X_train, y_train)
| 항목 | 값 |
|---|---|
| 베이스 모델 | 직접 구현 (처음부터 학습) |
| 크기 · 변형 | RandomForestClassifier(n_estimators=100, max_depth=4, random_state=42) |
| 리비전 | scikit-learn 1.9.0 (uv.lock 기준) |
| 아키텍처 | 깊이 4 이하 결정 트리 100개의 다수결 |
| 학습 방식 | 처음부터 학습 (지도학습) |
| 프롬프트 · 에이전트 구성 | 해당 없음 |
결정 트리 카드와 같은 데이터·분할·전처리입니다.
| 항목 | 값 |
|---|---|
| 확보 방식 | 공개 데이터셋 그대로 (수업 제공) |
| 출처 | 수업 자료 data/customer_churn_classification_dataset.xlsx |
| 직접 수집 내용 | 해당 없음 |
| 이용 조건 확인 | 해당 없음 (수업 자료) |
| 규모 | 1,200명 × 15열 |
| 분할 | train 960 / test 240 (8:2, stratify, 시드 42) |
| 레이블·클래스 분포 | 잔류(0) 868 (72.3%) / 이탈(1) 332 (27.7%). test는 잔류 174 / 이탈 66 |
| 전처리 | 범주형 7열(나이 포함) 원-핫 인코딩 + 숫자 열 = 82열. 스케일링 없음 |
| 개인정보·민감정보 처리 | 해당 없음 (가상의 고객 데이터) |
| 항목 | 값 |
|---|---|
| 하이퍼파라미터 | n_estimators=100, max_depth=4, 그 외 기본값 (class_weight 없음) |
| 에폭 / 스텝 | 해당 없음 |
| 학습 시간 | [미확인] (노트북에 시간 측정이 없음) |
| 하드웨어 | CPU (scikit-learn). 장비 이름 [미확인] |
| 프레임워크 | scikit-learn 1.9.0, pandas 3.0.5 |
| 시드 · 재현 방법 | train_test_split(test_size=0.2, stratify=y, random_state=42), 모델 random_state=42 |
test 240명 기준, 노트북 출력입니다.
| 지표 | 값 | 테스트셋 | 비교 대상 (baseline 등) |
|---|---|---|---|
| accuracy | 0.725 | test 240 | 결정 트리 0.6875, CatBoost 0.683 |
| precision (이탈) | 0.0 | test 240 | 예측된 이탈이 없어 0으로 처리됨 (UndefinedMetricWarning) |
| recall (이탈) | 0.0 | test 240 | |
| F1 (이탈) | 0.0 | test 240 | 결정 트리 0.194, CatBoost 0.191 |
| ROC-AUC | 0.5 | test 240 | predict()의 0/1 값으로 계산 |
혼동행렬 (행: 실제, 열: 예측): [[174, 0], [66, 0]]
측정 안 함.
| 장비 | 장비 이름 | 배치 크기 | 지연 시간 (샘플당, p50 / p95) | 처리량 (샘플/초) | 메모리 사용 |
|---|---|---|---|---|---|
| CPU | [미확인] | - | 측정 안 함 | 측정 안 함 | 측정 안 함 |
| GPU | 해당 없음 (scikit-learn은 CPU 전용) | - | - | - | - |
class_weight 없이 학습할 때class_weight='balanced'를 먼저 넣음 → 미니대회 랜덤 포레스트from sklearn.ensemble import RandomForestClassifier
data_rf = RandomForestClassifier(
n_estimators=100,
max_depth=4,
random_state=42
)
data_rf.fit(X_train, y_train)
rf_pred = data_rf.predict(X_test)
print(confusion_matrix(y_test, rf_pred))
print('Accuracy : ', accuracy_score(y_test, rf_pred))
print('F1 Score : ', f1_score(y_test, rf_pred))
print('ROC-AUC : ', roc_auc_score(y_test, rf_pred))
print(classification_report(y_test, rf_pred))
[[174 0]
[ 66 0]]
Accuracy : 0.725
F1 Score : 0.0
ROC-AUC : 0.5
precision recall f1-score support
0 0.72 1.00 0.84 174
1 0.00 0.00 0.00 66
accuracy 0.72 240
macro avg 0.36 0.50 0.42 240
weighted avg 0.53 0.72 0.61 240굵은 이름이 이 모델입니다. 주황 테두리가 그룹 안 최고값입니다.