ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Pandas와 Scikit-Learn을 활용한 머신러닝 모델 만들기
    pandas 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
Designed by Tistory.