pandas
Pandas와 Scikit-Learn을 활용한 머신러닝 모델 만들기
난개발자
2025. 1. 30. 22:36
728x90
Pandas와 Scikit-Learn을 활용한 머신러닝 모델 만들기
이번 포스팅에서는 Pandas로 데이터를 정리한 후 Scikit-Learn을 활용하여 머신러닝 모델을 구축하는 과정을 살펴보겠습니다.
예제 데이터셋으로 타이타닉 데이터를 사용하여 생존자를 예측하는 머신러닝 모델을 만들어보겠습니다.
1. 라이브러리 설치 및 불러오기
먼저 필요한 라이브러리를 설치합니다.
pip install pandas scikit-learn seaborn matplotlib
이제 필요한 라이브러리를 불러옵니다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
2. 데이터 불러오기 및 전처리
(1) 데이터 불러오기
# 타이타닉 데이터셋 로드
df = sns.load_dataset("titanic")
# 데이터 확인
print(df.head())
print(df.info())
(2) 결측값 처리
# 결측값 확인
print(df.isnull().sum())
# 나이 결측값을 중앙값으로 채우기
df['age'].fillna(df['age'].median(), inplace=True)
# embarked(탑승 항구) 결측값을 최빈값으로 채우기
df['embarked'].fillna(df['embarked'].mode()[0], inplace=True)
# deck 열은 결측값이 많으므로 삭제
df.drop(columns=['deck'], inplace=True)
(3) 범주형 데이터를 숫자로 변환
# 성별을 숫자로 변환
df['sex'] = df['sex'].map({'male': 0, 'female': 1})
# embarked(탑승 항구) 원-핫 인코딩 적용
df = pd.get_dummies(df, columns=['embarked'], drop_first=True)
(4) 사용하지 않을 열 제거
df.drop(columns=['alive', 'who', 'adult_male', 'class', 'embark_town'], inplace=True)
3. 머신러닝 모델 훈련
(1) 데이터셋 분리
# 특성과 타겟 변수 설정
X = df.drop(columns=['survived']) # 특성 (Feature)
y = df['survived'] # 타겟 (Target)
# 훈련 데이터와 테스트 데이터 분리 (80:20 비율)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
(2) 데이터 정규화 (선택 사항)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
(3) 랜덤 포레스트 모델 훈련
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
4. 모델 평가
(1) 예측 및 정확도 평가
y_pred = model.predict(X_test)
# 정확도 평가
accuracy = accuracy_score(y_test, y_pred)
print(f"모델 정확도: {accuracy:.4f}")
(2) 분류 보고서 및 혼동 행렬
print("분류 보고서:")
print(classification_report(y_test, y_pred))
# 혼동 행렬 시각화
conf_matrix = confusion_matrix(y_test, y_pred)
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
plt.xlabel("예측값")
plt.ylabel("실제값")
plt.title("혼동 행렬")
plt.show()
5. 마무리
이번 포스팅에서는 Pandas로 데이터를 전처리하고, Scikit-Learn을 활용하여 머신러닝 모델을 구축하는 과정을 배웠습니다.
다음 글에서는 다양한 머신러닝 알고리즘 비교 및 하이퍼파라미터 튜닝을 다룰 예정이니 기대해주세요!
728x90