머신러닝/머신러닝: 실전 프로젝트 학습

아파트 경매 가격 예측 프로젝트 2 : EDA

qordnswnd123 2025. 1. 7. 15:18

1. 종속변수의 분포 확인

import seaborn as sns
import matplotlib.pyplot as plt

ax = sns.histplot(data=train, x="Hammer_price", bins=100)
plt.show()

 


2. Hammer_price(낙찰가) 와 Auction_count(총 경매 횟수)의 관계 확인

fig, ax = plt.subplots(figsize = (10,10))

x = train['Auction_count']
y = train['Hammer_price']

ax.set_xlabel('Auction_count')
ax.set_ylabel('Hammer_price')

ax.bar(x,y)
plt.show()

 

※ 결과 해석

Auction_count가 약 6회 이상일 경우 Hammer_price가 뚜렷하게 낮아지는 것이 확인됩니다.
'유찰 횟수'가 높을수록 Auction_count가 증가하는데, 일반적으로 '유찰'이 될 때마다 최저매각가격이 감소합니다.

따라서, Auction_count를 독립변수로 사용하여 Hammer_price를 예측하는 모델을 구축할 경우,
경매가 진행되면서 발생하는 유찰 횟수를 반영하고, 모델은 경매가 진행될수록 Hammer_price의 하락 경향을 학습할 수 있습니다.


3. Hammer_price 와 부산의 관계

train_busan = train[train['addr_do'] == '부산']

fig, ax = plt.subplots(figsize = (10,5), dpi = 100)

x = train_busan[train_busan['Hammer_price']>700000000]['addr_si'].value_counts().index
y = train_busan[train_busan['Hammer_price']>700000000]['addr_si'].value_counts().values

ax.tick_params(axis = 'x', rotation=45)
ax.bar(x,y)
plt.show()

 


4. Hammer_price 와 서울의 관계

train_seoul = train[train['addr_do'] == '서울']

fig, ax = plt.subplots(figsize = (10,5), dpi = 100)

x = train_seoul[train_seoul['Hammer_price']>3000000000]['addr_si'].value_counts().index
y = train_seoul[train_seoul['Hammer_price']>3000000000]['addr_si'].value_counts().values

ax.tick_params(axis = 'x', rotation=45)
ax.bar(x,y)
plt.show()

 


5. Auction_seq(거래 횟수) & price(가격)의 관계

fig, ax = plt.subplots(figsize = (7,5))

x_seq = result[result['Auction_key']==3]['Auction_seq']
y_min_price= result[result['Auction_key']==3]['Minimum_sales_price']
y_price= result[result['Auction_key']==3]['Appraisal_price']

ax.set_xlabel('Auction_seq')
ax.set_ylabel('Price')

ax.plot(x_seq,y_min_price)
ax.plot(x_seq,y_price)
ax.legend(['Minimum_sales_price','Appraisal_price'])
plt.show()

 


6. Appraisal_price(감정가) & Minimum_sales_price(최저 매각 가격)의 관계

fig, ax = plt.subplots(figsize = (10,5))

y_price_comparison = result['Appraisal_price']
y_minprice_comparison = result['Minimum_sales_price']

ax.set_xlabel('min_price_comparison')
ax.set_ylabel('price_comparisonice')

plt.xlim(0, 0.5e10)
plt.ylim(0, 0.8e10)

ax.scatter(y_minprice_comparison,y_price_comparison)
plt.show()

 


7.Total_land_auction_area(총 토지 경매 면적) & Total_land_real_area(총 토지 실면적)의 관계

fig, ax = plt.subplots(figsize = (10,5))

area = train[['Total_land_auction_area','Total_land_real_area']]

ax.scatter(x = area['Total_land_auction_area'], y = area['Total_land_real_area'])

plt.xlabel('Total_land_auction_area')
plt.ylabel('Total_land_real_area')

plt.xlim([0,250])
plt.ylim([0,250])

plt.show()

 

※ 결과 해석

경매 면적이 증가할수록 실면적도 증가합니다.
Total_land_auction_area와 Total_land_real_area는 선형관계가 나타나는 것을 보았을 때 다중공선성 관계에 해당하는 것으로 보입니다.

따라서 두 변수 중 하나의 변수를 제거함으로써 다중공선성 문제를 해결할 수 있을 것입니다.