Competition/Kaggle

[kaggle] House Prices: Advanced Regression Techniques (3) 그래프

bisi 2020. 4. 28. 10:35

Kaggle에서 진행하는 House Prices: Advanced Regression Techniques 데이터셋을 분석하였다. 

Regresssion을 통한 집값 예측하기 위해 그전에 아래 4가지 단계로 나누어 데이터 탐색을 진행하였다.  

 

출처 : https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

 

House Prices: Advanced Regression Techniques

Predict sales prices and practice feature engineering, RFs, and gradient boosting

www.kaggle.com


그래프 

 

HouseData_Cleansing_Final_HB-Copy3

수치형 데이터 차트 보기

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]:
<matplotlib.axes._subplots.AxesSubplot at 0x189948bb4a8>
  • 주거타입(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]:
<matplotlib.axes._subplots.AxesSubplot at 0x18994d1d5c0>
  • 지어진 년도(yearBuilt)가 최신일수록 가격이 높다.
  • 8,9,11,12월이 가격이 높은편에 속한다.
  • 판매년도의 평균은 비슷하다.
In [20]:
# 시간의 흐름에 따른 데이터 분석
house_train["YearBuilt"].value_counts()
Out[20]:
2006    67
2005    64
2004    54
2007    49
2003    45
1976    33
1977    32
1920    30
1959    26
1999    25
1998    25
1958    24
1965    24
1970    24
1954    24
2000    24
2002    23
2008    23
1972    23
1968    22
1971    22
1950    20
2001    20
1957    20
1962    19
1994    19
1966    18
2009    18
1995    18
1940    18
        ..
1986     5
1952     5
1880     4
1929     4
1932     4
1938     4
1983     4
1927     3
1919     3
1934     3
1989     3
1987     3
1912     3
1885     2
1892     2
1890     2
1942     2
1908     2
1882     1
1875     1
1893     1
2010     1
1898     1
1904     1
1905     1
1906     1
1911     1
1913     1
1917     1
1872     1
Name: YearBuilt, Length: 112, dtype: int64
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)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-21-59bf96b94e15> in <module>
      6 sns.pointplot(data=house_train, x="MoSold", y="SalePrice", hue="CentralAir", ax=ax2)
      7 
----> 8 sns.pointplot(data=house_train, x="MoSold", y="SalePrice", hue="KitchenQual", ax=ax3)

D:\Dev\Anaconda\lib\site-packages\seaborn\categorical.py in pointplot(x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, markers, linestyles, dodge, join, scale, orient, color, palette, errwidth, capsize, ax, **kwargs)
   3338         ax = plt.gca()
   3339 
-> 3340     plotter.plot(ax)
   3341     return ax
   3342 

D:\Dev\Anaconda\lib\site-packages\seaborn\categorical.py in plot(self, ax)
   1809     def plot(self, ax):
   1810         """Make the plot."""
-> 1811         self.draw_points(ax)
   1812         self.annotate_axes(ax)
   1813         if self.orient == "h":

D:\Dev\Anaconda\lib\site-packages\seaborn\categorical.py in draw_points(self, ax)
   1805                            c=point_colors, edgecolor=point_colors,
   1806                            linewidth=mew, marker=marker, s=markersize,
-> 1807                            zorder=z)
   1808 
   1809     def plot(self, ax):

D:\Dev\Anaconda\lib\site-packages\matplotlib\__init__.py in inner(ax, data, *args, **kwargs)
   1587     def inner(ax, *args, data=None, **kwargs):
   1588         if data is None:
-> 1589             return func(ax, *map(sanitize_sequence, args), **kwargs)
   1590 
   1591         bound = new_sig.bind(ax, *args, **kwargs)

D:\Dev\Anaconda\lib\site-packages\matplotlib\axes\_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, plotnonfinite, **kwargs)
   4488                 offsets=offsets,
   4489                 transOffset=kwargs.pop('transform', self.transData),
-> 4490                 alpha=alpha
   4491                 )
   4492         collection.set_transform(mtransforms.IdentityTransform())

D:\Dev\Anaconda\lib\site-packages\matplotlib\collections.py in __init__(self, paths, sizes, **kwargs)
    881         """
    882 
--> 883         Collection.__init__(self, **kwargs)
    884         self.set_paths(paths)
    885         self.set_sizes(sizes)

D:\Dev\Anaconda\lib\site-packages\matplotlib\collections.py in __init__(self, edgecolors, facecolors, linewidths, linestyles, capstyle, joinstyle, antialiaseds, offsets, transOffset, norm, cmap, pickradius, hatch, urls, offset_position, zorder, **kwargs)
    126         self._hatch_color = mcolors.to_rgba(mpl.rcParams['hatch.color'])
    127         self.set_facecolor(facecolors)
--> 128         self.set_edgecolor(edgecolors)
    129         self.set_linewidth(linewidths)
    130         self.set_linestyle(linestyles)

D:\Dev\Anaconda\lib\site-packages\matplotlib\collections.py in set_edgecolor(self, c)
    726         """
    727         self._original_edgecolor = c
--> 728         self._set_edgecolor(c)
    729 
    730     def set_alpha(self, alpha):

D:\Dev\Anaconda\lib\site-packages\matplotlib\collections.py in _set_edgecolor(self, c)
    710         except AttributeError:
    711             pass
--> 712         self._edgecolors = mcolors.to_rgba_array(c, self._alpha)
    713         if set_hatch_color and len(self._edgecolors):
    714             self._hatch_color = tuple(self._edgecolors[0])

D:\Dev\Anaconda\lib\site-packages\matplotlib\colors.py in to_rgba_array(c, alpha)
    284     result = np.empty((len(c), 4), float)
    285     for i, cc in enumerate(c):
--> 286         result[i] = to_rgba(cc, alpha)
    287     return result
    288 

D:\Dev\Anaconda\lib\site-packages\matplotlib\colors.py in to_rgba(c, alpha)
    175         rgba = None
    176     if rgba is None:  # Suppress exception chaining of cache lookup failure.
--> 177         rgba = _to_rgba_no_colorcycle(c, alpha)
    178         try:
    179             _colors_full_map.cache[c, alpha] = rgba

D:\Dev\Anaconda\lib\site-packages\matplotlib\colors.py in _to_rgba_no_colorcycle(c, alpha)
    236         # float)` and `np.array(...).astype(float)` all convert "0.5" to 0.5.
    237         # Test dimensionality to reject single floats.
--> 238         raise ValueError("Invalid RGBA argument: {!r}".format(orig_c))
    239     # Return a tuple to prevent the cached value from being modified.
    240     c = tuple(c.astype(float))

ValueError: Invalid RGBA argument: masked

 


관련 글 모아보기

 

[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) 상관관계, 정규 분포