본문 바로가기
프로그래밍/머신러닝

집값과 경기종합지수의 상관관계_파이썬으로 머신러닝 배우기

by 조크리 2021. 4. 19.
반응형

파이썬으로 머신러닝 배우기!

 

먼저 kosis.kr에서 서울의 아파트 매매가, 단독주택매매가, 연립다세대 매매가, 경기종합지수에 대한 데이터를 가져왔다. 

kosis.kr/index/index.do

 

KOSIS 국가통계포털

첫단어 더보기 끝단어 더보기 자동완성 끄기 자동완성 켜기 자동 추천 기능을 사용해보세요. 검색어 입력시 자동으로 관련어를 추천합니다.

kosis.kr

가져온 데이터들은 엑셀에 2015년 10월부터 2021년 2월까지로 정리하였다. 

서울의 아파트, 연립다세대, 단독주택의 평균 매매가격이며

 

아파트 : 전용면적 기준, 규모1) 40㎡이하, 규모2) 40㎡초과~60㎡이하, 규모3) 60㎡초과~85㎡이하, 규모4) 85㎡초과~102㎡이하,규모5) 102㎡초과~135㎡이하, 규모6) 135㎡초과

 

중에 규모 3

 

연립다세대 : 전용면적 기준, 규모1) 40㎡이하, 규모2) 40㎡초과~60㎡이하, 규모3) 60㎡초과~85㎡이하, 규모4) 85㎡초과

 

중에 규모 3

 

단독주택 : 규모1) 전용면적99㎡이하 & 대지면적231㎡이하, 규모2) 전용면적99㎡초과 331이하 & 대지면적662㎡이하 또는 전용면적99㎡이하 & 대지면적231㎡초과 662㎡이하, 규모3) 전용면적331㎡초과 또는 대지면적662㎡초과

 

중에 규모 3

 

을 가져왔다. 

 

단독주택은 규모 1을 가져왔어야 하는데..... 

 

일단 규모3으로 해보았다. 

 

그래서 그런지 단독주택이 가장 관련성이 낮았다. 

 

seoulapt.xlsx
0.02MB

 

 

 

 

1. 아파트매매가와 경기종합지수 2차 함수식

 

서울의 규모3의 아파트 매매가와 경기종합지수의 상관관계를 2차 함수식으로 예측해보았다. 

 

결정계수가 0.9255로 꽤 높게 나타났다. 

 

 

 

2. 연립다세대 매매가와 경기종합지수

 

결정계수는 0.9263으로 아파트보다는 좀 낮다. 

 

 

3. 단독주택 매매가와 경기 종합지수

 

단독주택 매매가는 타 주택 유형보다 결정계수가 낮았다. 

0.8939로 가장 낮게 나타났다. 

아무래도 규모1의 데이터를 가져왔어야한다....

 

 

4. 서울의 집값과 경기종합지수

 

결정계수가 0.9314로 서울의 집값과 경기종합지수는 관련성이 꽤 크다는 것을 알 수 있다. 

아마 전국단위로 하면 집 값과 경기 종합 지수의 관계를 더욱 정확히 알 수 있을 것 같다. 

 

 

5. 서울 집값과 경기종합지수의 2차함수식

 

확실히 2차 함수식으로 나타내니 결정 계수가 0.9939로 올라가고 예측 그래프도 정확해졌다. 

 

import pandas as pd
import openpyxl
import matplotlib.pyplot as plot
import sklearn
plot.rcParams["font.family"] = 'Malgun gothic'

data = pd.read_excel("seoulapt.xlsx", header=0)

newData = data[['경기종합지수', '아파트매매가', '단독주택매매가','연립다세대매매가']]

#속성(변수) 선택
x = newData[['아파트매매가', '단독주택매매가','연립다세대매매가']]
y = newData[['경기종합지수']]

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(degree = 2) #2차항 적용
x_poly = poly.fit_transform(x)

#단순 회귀 모델 생성
model = LinearRegression()
model.fit(x_poly, y)

#예측 모델 생성
y_p = model.predict(x_poly)

#가중치와 y절편 출력
print('가중치 a : ', model.coef_)
print('y절편 : ', model.intercept_)

#결정계수
relation_square = model.score(x_poly, y)
print('결정계수 : ', relation_square)

import seaborn as sns
ax1 = sns.distplot(y, hist = False, label = 'y실제')
ax2 = sns.distplot(y_p, hist = False, label = 'y예측')
plot.show()


#seaborn으로 출력
#plot.scatter(x['kor'], y, marker = '+')
#plot.scatter(x['kor'], y_p, marker = 'o')

#plot.figure(figsize=(10,5))
#plot.show()

 

반응형