Data Analysis/MachineLearning

[Kaggle] 머신러닝 문제 해결을 위한 접근법 순서 정리

사족보행 개발자 2025. 1. 21. 21:13
728x90

Kaggle 머신러닝 문제 접근 및 데이터 전처리 과정

Kaggle과 같은 플랫폼에서 머신러닝 문제를 해결하려면 데이터 전처리부터 모델링, 결과 도출까지의 단계를 체계적으로 수행해야 한다. 다음은 이 과정의 주요 단계와 간단한 예시이다.

1. 데이터 이해 및 탐색 (EDA: Exploratory Data Analysis)

데이터를 이해하고 탐색한다. 데이터셋의 구조, 결측치, 이상치, 분포 등을 분석한다.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 데이터 로드
file_path = 'data.csv'
data = pd.read_csv(file_path)

# 데이터 확인
print(data.head())
print(data.info())

# 결측치 시각화
sns.heatmap(data.isnull(), cbar=False)
plt.show()

2. 데이터 전처리

데이터의 품질을 개선하기 위해 결측치를 처리하고, 범주형 데이터를 인코딩하며, 특성을 선택하거나 생성한다.

from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder

# 결측치 처리 (평균으로 대체)
imputer = SimpleImputer(strategy='mean')
data['Age'] = imputer.fit_transform(data[['Age']])

# 범주형 데이터 인코딩
encoder = OneHotEncoder(sparse=False)
encoded_columns = encoder.fit_transform(data[['Category']])
encoded_df = pd.DataFrame(encoded_columns, columns=encoder.get_feature_names_out(['Category']))

# 원본 데이터와 병합
data = pd.concat([data, encoded_df], axis=1)
data.drop(['Category'], axis=1, inplace=True)

3. 데이터 분할

모델 학습 및 평가를 위해 데이터를 학습용(train)과 검증용(validation)으로 분리한다.

from sklearn.model_selection import train_test_split

# 특성과 타겟 분리
X = data.drop('Target', axis=1)
y = data['Target']

# 데이터 분할
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

4. 모델 훈련

적합한 머신러닝 모델을 선택하여 학습시킨다. 여기서는 랜덤 포레스트를 사용한다.

from sklearn.ensemble import RandomForestClassifier

# 모델 초기화 및 학습
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)

5. 결과 평가

모델 성능을 평가하고 결과를 도출한다.

from sklearn.metrics import accuracy_score, classification_report

# 예측 수행
y_pred = model.predict(X_val)

# 정확도 확인
accuracy = accuracy_score(y_val, y_pred)
print(f"Accuracy: {accuracy:.2f}")

# 상세 보고서 출력
print(classification_report(y_val, y_pred))

6. 제출 파일 생성

Kaggle에 제출하기 위한 결과 파일을 생성한다.

# 테스트 데이터 예측 및 제출 파일 생성
test_data = pd.read_csv('test.csv')
test_pred = model.predict(test_data)

submission = pd.DataFrame({
    'Id': test_data['Id'],
    'Target': test_pred
})
submission.to_csv('submission.csv', index=False)

이 과정을 통해 데이터를 전처리하고, 모델을 학습시키며, 결과를 도출할 수 있다. 각 단계는 문제의 특성과 데이터셋에 따라 조정이 필요하다.

728x90