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