🐍 Python

Python 데이터 분석 & 머신러닝 파이프라인으로 보험 데이터 예측하기

itstory(Booho) 2025. 2. 8. 21:03
728x90

🔹 1. 파이프라인이란? 초보자도 쉽게 이해하는 개념

✅ 파이프라인(Pipeline)이란?

파이프라인(Pipeline)은 데이터를 여러 단계로 나눠 자동으로 처리하는 기술입니다.
예를 들어, 보험 청구 금액을 예측하는 모델을 만든다고 할 때, 다음과 같은 과정이 필요합니다.

 

1️⃣ 데이터 수집: CSV 파일에서 데이터를 불러옴
2️⃣ 데이터 전처리: 결측값 처리, 불필요한 컬럼 삭제
3️⃣ 특징 엔지니어링: 데이터 변환, 스케일링, 원-핫 인코딩
4️⃣ 머신러닝 모델 학습: Random Forest, XGBoost 등 모델 훈련
5️⃣ 예측 및 평가: 모델을 테스트하고 정확도 평가

🔥 이 모든 단계를 자동으로 수행하는 것이 "파이프라인"입니다!
반복적인 작업을 줄이고, 실수를 방지하며, 쉽게 모델을 개선할 수 있도록 도와줍니다.


🔹 2. Python을 활용한 데이터 분석 (보험 데이터 다뤄보기)

실제 Python 코드로 보험 데이터를 분석하고 파이프라인을 만들어 보겠습니다.
우선, 필요한 라이브러리를 설치하고 데이터를 불러옵니다.

# 필요한 라이브러리 불러오기 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 

# 데이터 불러오기 
df = pd.read_csv('data/healthcare.csv') 

# 데이터 미리보기 
df.head()
 
 

✅ 데이터 설명

  • age: 가입자의 나이
  • Gender : 성별 (남성, 여성)
  • bmi: 체질량 지수 (비만 여부)
  • Region : 거주 지역
  • smoker: 흡연 여부 (Yes/No)
  • NumVisits : 방문 횟수
  • InsuranceClaim : 보험 청구 금액 (예측 대상)

🔹 3. 머신러닝 파이프라인 만들기 (자동화)

데이터 분석을 쉽게 하기 위해 scikit-learn의 파이프라인 기능을 사용합니다.
아래 과정이 한 번에 실행되도록 설정할 것입니다.

✅ 1) 데이터 전처리 (누락값, 인코딩, 스케일링)

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer

# 특성과 타겟 데이터 나누기
X = df.drop(columns=['InsuranceClaim'])  # 독립 변수
y = df['InsuranceClaim']  # 종속 변수

# NaN 파일 드랍 
X=X.dropna()

# 카테고리컬 데이터와 수치형 데이터 처리
# 컬럼이름을 분리해서 저장 
# 수치형, 범주형 변수 구분
num_features = ['age', 'bmi', 'NumVisits'] 
cat_features = ['Gender', 'smoker', 'region'] 

# 전처리 파이프라인 (수치형: 스케일링, 범주형: 원-핫 인코딩)
preprocessor = ColumnTransformer([
    ('num', StandardScaler(), num_features),
    ('cat', OneHotEncoder(), cat_features)
])

# 데이터 분할 (훈련용 80%, 테스트용 20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

✅ 2) 머신러닝 모델 적용 (랜덤 포레스트)

from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error

# 파이프라인 생성 (전처리 + 모델)
pipeline = Pipeline([
    ('preprocessing', preprocessor),
    ('model', RandomForestRegressor(n_estimators=100, random_state=42))
])

# 모델 학습
pipeline.fit(X_train, y_train)

# 예측 수행
y_pred = pipeline.predict(X_test)

# 모델 평가 (MAE: 평균 절대 오차)
mean_squared_error(y_test, y_pred)
r2_score( y_test, y_pred)
 
 

 


🔹 4. 결과 분석 & 예측 시각화

모델이 예측한 보험 청구 금액과 실제 값을 비교해봅시다.

# 예측값과 실제값 비교 시각화
plt.figure(figsize=(8, 5))
sns.scatterplot(x=y_test, y=y_pred, alpha=0.5)
plt.xlabel("실제 청구 금액")
plt.ylabel("예측 청구 금액")
plt.title("보험 청구 금액 예측 비교")
plt.show()

 

예측값이 실제 값과 가까울수록 좋은 모델입니다.
파이프라인을 활용하면 한 번의 실행으로 데이터 전처리부터 모델 훈련까지 자동화할 수 있습니다!


🔹 5. 결론: 파이프라인을 활용하면 이런 점이 좋다!

1) 데이터 전처리부터 모델 학습까지 한 번에 가능!
2) 자동화로 반복적인 작업을 줄이고, 실수를 방지할 수 있음
3) 파이프라인을 사용하면 향후 모델 변경 및 개선이 쉬움!

📌 파이프라인을 활용하면 데이터 분석과 머신러닝이 훨씬 더 쉬워집니다.
📌 초보자도 쉽게 따라 할 수 있도록 Python 코드와 함께 실습해 보세요! 🚀


💬 마무리 :  다음에는 이런 내용을 추가할 수도 있어요!

  • 다른 머신러닝 알고리즘(XGBoost, LightGBM) 적용하기
  • 하이퍼파라미터 튜닝을 활용해 모델 성능 개선하기
  • 딥러닝(인공신경망, TensorFlow) 적용해서 성능 비교하기

🔥 "반복적인 데이터 분석이 지겹다면, 파이프라인을 활용해 자동화하세요!"
이 글이 도움이 되셨다면, 댓글이나 공유 부탁드립니다! 😊

728x90