Kaggle에서 진행하는 House Prices: Advanced Regression Techniques 데이터셋을 분석하였다.
Regresssion을 통한 집값 예측하기 위해 그전에 아래 4가지 단계로 나누어 데이터 탐색을 진행하였다.
출처 : https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data
그래프
수치형 데이터 차트 보기¶
In [18]:
##### 범주형 변수와 가격사이의 비교
figure, ((ax1,ax2,ax3,ax4), (ax5,ax6,ax7,ax8)) = plt.subplots(nrows=2, ncols=4)
figure.set_size_inches(18,8)
sns.barplot(data=house_train, x="MSSubClass", y="SalePrice", ax=ax1)
sns.barplot(data=house_train, x="LotShape", y="SalePrice", ax=ax2)
sns.barplot(data=house_train, x="BldgType", y="SalePrice", ax=ax3)
sns.barplot(data=house_train, x="HouseStyle", y="SalePrice", ax=ax4)
sns.barplot(data=house_train, x="KitchenAbvGr", y="SalePrice", ax=ax5)
sns.barplot(data=house_train, x="Functional", y="SalePrice", ax=ax6)
sns.barplot(data=house_train, x="SaleType", y="SalePrice", ax=ax7)
sns.barplot(data=house_train, x="SaleCondition", y="SalePrice", ax=ax8)
#ax1.set(ylabel='주거타입',title="연도별 가격")
# ax2.set(xlabel='부지모양',title="월별 가격")
# ax3.set(xlabel='주거 타입', title="일별 가격")
# ax4.set(xlabel='주거 스타일', title="시간별 가격")
# ax4.set(xlabel='최초공사년도', title="시간별 가격")
# ax4.set(xlabel='리모델링년도', title="시간별 가격")
Out[18]:
- 주거타입(MSSubClass)은 60( 2-STORY 1946 & NEWER), 120(1-STORY PUD (Planned Unit Development)-1946 & NEWER), 20(1-STORY 1946 & NEWER ALL STYLES) 순으로 집값이 가장 높다.
- 부지모양(Lotshape)은 IR2(Moderately Irregular)가 가장 높다.
- 주택의 종류(BldgType)는 Single-family Detached ,Townhouse End Unit가 가장 높다.
- 주거 스타일(HouseStyle)은 분리된 층이 있는 집(Split Level)의 가격이 가장 높고, Two story(2층집)이 가장 가격이 낮다.
- 주방은 1개일때가 가장 높고, 3개일때가 가장 낮다
- 판매 타입은 막 건설해서 팔린 집과 낮은 계약금, 저금리를 가진 집이 가장 높고, 법정사유지나 낮은 이자 기타 다른 이유의 집은 가격이 낮다.
- 판매 상태는 집이 아직 다 건설되지 않은 경우(Partial)가 가장 높고, 인근 토지 매입이 가장 낮다.
In [19]:
# 시간에 따른 가격 분석
fig, axes = plt.subplots(nrows=2,ncols=2)
fig.set_size_inches(12, 10)
sns.boxplot(data=house_train,y="SalePrice",orient="v",ax=axes[0][0])
sns.boxplot(data=house_train,y="SalePrice",x="YearBuilt",orient="v",ax=axes[0][1])
sns.boxplot(data=house_train,y="SalePrice",x="MoSold",orient="v",ax=axes[1][0])
sns.boxplot(data=house_train,y="SalePrice",x="YrSold",orient="v",ax=axes[1][1])
# axes[0][0].set(ylabel='Count',title="대여량")
# axes[0][1].set(xlabel='Season', ylabel='Count',title="계절별 대여량")
# axes[1][0].set(xlabel='Hour Of The Day', ylabel='Count',title="시간별 대여량")
# axes[1][1].set(xlabel='Working Day', ylabel='Count',title="근무일 여부에 따른 대여량")
Out[19]:
- 지어진 년도(yearBuilt)가 최신일수록 가격이 높다.
- 8,9,11,12월이 가격이 높은편에 속한다.
- 판매년도의 평균은 비슷하다.
In [20]:
# 시간의 흐름에 따른 데이터 분석
house_train["YearBuilt"].value_counts()
Out[20]:
In [21]:
fig,(ax1,ax2,ax3)= plt.subplots(nrows=3)
fig.set_size_inches(18,25)
sns.pointplot(data=house_train, x="MoSold", y="SalePrice", ax=ax1)
sns.pointplot(data=house_train, x="MoSold", y="SalePrice", hue="CentralAir", ax=ax2)
sns.pointplot(data=house_train, x="MoSold", y="SalePrice", hue="KitchenQual", ax=ax3)
관련 글 모아보기
[kaggle] House Prices: Advanced Regression Techniques (1) 데이터형태
[kaggle] House Prices: Advanced Regression Techniques (2) 범주형 데이터 인코딩
[kaggle] House Prices: Advanced Regression Techniques (3) 그래프
[kaggle] House Prices: Advanced Regression Techniques (4) 상관관계, 정규 분포