train_pipeline.py
import pandas as pd
import seaborn as sns
import mlflow
import mlflow.sklearn
from sklearn.linear_model import LinearRegression # 선형 회귀 모델
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
tips = sns.load_dataset('tips') # tips dataset 사용
x = tips[['total_bill']] # 독립 변수 : 금액
y = tips['tip'] # 종속 변수 : 팁
x_train, x_test, y_train, y_test = train_test_split(x,y, random_state=42)
: 데이터 전처리 + 모델을 자동으로 처리
pipe = Pipeline([
('scaler', StandardScaler()), # total_bill 표준 정규화
('regressor', LinearRegression()) # 선형 회귀 모델 적용
])
mlflow.set_experiment('Tips_Pipeline_Experiment2')
with mlflow.start_run() as run:
pipe.fit(x_train, y_train) # 파이프라인 학습
preds = pipe.predict(x_test) # 예측
mse = mean_squared_error(y_test, preds) # 성능 평가
mlflow.log_param('model_type', 'StandardScaler_LinearRegression') # 실험 정보 기록 - 모델 종류
mlflow.log_metric('mse', mse) # 실험 정보 기록 - 성능 지표
mlflow.sklearn.log_model(pipe, artifact_path = 'pipeline_model') # 파이프라인 객체 저장
print(f"✅ 파이프라인 저장 완료 (run_id: {run.info.run_id})")