25년도 실기 유형 반영해서
두가지 모델(RandomForest, LGBM)로 풀이를 하는 코드를 추가합니다.
import pandas as pd
import numpy as np # RMSE 계산을 위해 위로 올렸습니다.
train = pd.read_csv("data/customer_train.csv")
test = pd.read_csv("data/customer_test.csv")
# 사용자 코딩
train1 = train.copy()
test1 = test.copy()
# 결측치 제거
train1['환불금액'] = train1['환불금액'].fillna(train1['환불금액'].mode()[0])
test1['환불금액'] = test1['환불금액'].fillna(test1['환불금액'].mode()[0])
# 라벨 인코더
from sklearn.preprocessing import LabelEncoder
le1 = LabelEncoder()
train1['주구매상품'] = le1.fit_transform(train1['주구매상품'])
test1['주구매상품'] = le1.transform(test1['주구매상품'])
le2 = LabelEncoder()
train1['주구매지점'] = le2.fit_transform(train1['주구매지점'])
test1['주구매지점'] = le2.transform(test1['주구매지점'])
# 자료 나누기
from sklearn.model_selection import train_test_split
x = train1.drop(columns = ['총구매액'])
y = train1['총구매액']
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size = 0.2, random_state = 2024)
# =================================================================
# 모델링 (RF와 LGBM 비교)
# =================================================================
from sklearn.ensemble import RandomForestRegressor
from lightgbm import LGBMRegressor # 추가: LGBM 불러오기
# 1. Random Forest
rfr = RandomForestRegressor(n_estimators = 120, max_depth=15, random_state = 2025)
rfr.fit(x_train, y_train)
pred_rfr = rfr.predict(x_val)
# 2. LightGBM (RF와 구조 완전 동일)
lgbm = LGBMRegressor(n_estimators = 120, max_depth=15, random_state = 2025)
lgbm.fit(x_train, y_train)
pred_lgbm = lgbm.predict(x_val)
# =================================================================
# 성능 평가 (두 모델 비교)
# =================================================================
from sklearn.metrics import mean_squared_error
# RF 평가
rmse_rfr = np.sqrt(mean_squared_error(y_val, pred_rfr))
print("RF RMSE :", rmse_rfr)
# LGBM 평가
rmse_lgbm = np.sqrt(mean_squared_error(y_val, pred_lgbm))
print("LGBM RMSE :", rmse_lgbm)
# =================================================================
# 최종 예측 및 결과 제출 (성능이 더 좋은 모델 선택)
# =================================================================
test_x_data = test1
# 위 print 결과를 보고 숫자가 더 낮은(오차가 적은) 모델로 최종 예측합니다.
# 예시로 lgbm을 사용했습니다. (RF가 좋으면 rfr.predict 로 변경)
pred_final = lgbm.predict(test_x_data)
pd.DataFrame({'pred': pred_final}).to_csv('result.csv', index=False)
# 확인용
result = pd.read_csv("result.csv")
# print(result.head())'Python > 빅데이터분석기사 실기' 카테고리의 다른 글
| 빅분기 실기 11회 대비 정리(작업형 1유형) (0) | 2025.11.26 |
|---|---|
| 빅데이터 분석기사 실기 체험 문제 유형 2번 풀이(25.11/21) (0) | 2025.11.21 |
| (2015.11.16) 빅데이터분석기사 실기 체험 문제 (0) | 2025.11.16 |
| 빅분기 실기 유형 3 정리 (가설 검정 및 통계 분석) (0) | 2025.11.13 |
| 빅분기 실기 유형 1 기출문제 코드 (set_option, unique) (0) | 2025.11.11 |