-
Pandas와 Scikit-Learn을 활용한 머신러닝 모델 만들기pandas 2025. 1. 30. 22:36728x90
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'pandas' 카테고리의 다른 글
편향 표준편차와 불편 표준편차 그리고 Pandas/Numpy의 `std` 차이점 (0) 2025.02.11 다양한 머신러닝 알고리즘 비교 및 하이퍼파라미터 튜닝 (0) 2025.01.31 Pandas를 활용한 실전 데이터 분석 예제 (0) 2025.01.30 Pandas를 활용한 데이터 분석 및 시각화 (0) 2025.01.30 Pandas를 활용한 데이터 전처리 및 정리 (0) 2025.01.30