반응형
이번 에피소드에서는 House Prices 대회의 데이터를 본격적으로 들여다보고, **탐색적 데이터 분석(EDA)**을 통해 통찰을 얻어보겠습니다.
📦 1. 데이터 로딩
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
📊 2. 목표 변수(SalePrice) 분포 확인
sns.histplot(train['SalePrice'], kde=True)
plt.title('SalePrice Distribution')
plt.show()
로그 분포 형태에 가까워 보이며, 오른쪽으로 꼬리가 긴 right-skewed 형태입니다.
회귀 모델의 성능을 위해 로그 변환을 고려할 수 있습니다.
🔎 3. 수치형 변수와의 상관관계 확인
numeric_feats = train.select_dtypes(include=['int64', 'float64'])
corr = numeric_feats.corr()['SalePrice'].sort_values(ascending=False)
print(corr.head(10))
상위 상관 피처 예시:
- OverallQual: 전반적 자재 마감 품질
- GrLivArea: 지상 거주 면적
- GarageCars, TotalBsmtSF, 1stFlrSF
🏠 4. 주요 피처 vs SalePrice 시각화
sns.scatterplot(x='GrLivArea', y='SalePrice', data=train)
plt.title('GrLivArea vs SalePrice')
plt.show()
특정 이상치(GrLivArea가 4000 이상인데 가격이 낮은 경우)가 확인됨 → 제거할지 검토
sns.boxplot(x='OverallQual', y='SalePrice', data=train)
plt.title('OverallQual vs SalePrice')
plt.show()
OverallQual이 높을수록 명확하게 가격이 상승하는 경향이 보임
🧩 5. 범주형 변수 예시 분석
sns.boxplot(x='Neighborhood', y='SalePrice', data=train)
plt.xticks(rotation=45)
plt.title('Neighborhood vs SalePrice')
plt.show()
지역에 따라 평균 집값이 크게 차이남 → 모델에 중요한 인사이트
✅ 요약
- SalePrice는 로그 분포 → 나중에 np.log1p()로 변환 예정
- OverallQual, GrLivArea 등은 강한 양의 상관관계
- 이상치와 범주형 인사이트 확인 완료
➡️ 다음 편에서는 결측치 처리 및 파생 피처 생성을 진행해보겠습니다 💡
반응형
'04. 캐글' 카테고리의 다른 글
| 00015. [KAG-002] House Prices 예측 #4 - 다양한 회귀 모델 학습 및 성능 비교 (0) | 2025.04.15 |
|---|---|
| 00014. [KAG-002] House Prices 예측 #3 - 결측치 처리 & 파생 피처 생성 (0) | 2025.04.15 |
| 00012. [KAG-002] House Prices 예측 #1 - 대회 분석 및 계획 세우기 (0) | 2025.04.15 |
| 00011. [KAG-001] Titanic 생존자 예측 #7 - 하이퍼파라미터 튜닝으로 성능 끌어올리기 (0) | 2025.04.04 |
| 00010. [KAG-001] Titanic 생존자 예측 #6 - XGBoost로 정밀하게 예측하기 (0) | 2025.04.04 |