scikit-learn을 사용하여 부동산 가격 예측하기 : 2) 실험 데이터 설정하기

scikit-learn을 사용하여 부동산 가격 예측하기

2) 실험 데이터 설정하기

실험 데이터는 pandas dataframe을 사용하여 설정하였습니다.

pandas는 데이터 처리와 분석을 위한 파이썬 라이브러리로

pandas의 dataframe은 엑셀의 스프레드시트와 비슷한 테이블 형태를 지원합니다.

전체 배열의 원소가 동일해야 하는 numpy와는 달리

pandas는 각 열의 타입이 달라도  사용이 가능합니다.

SQL, 엑셀 파일, csv 파일 등 다양한 파일과 데이터베이스에서 데이터를 읽어와서

dataframe으로 간단히 사용을 할 수 있어

python을 사용하는 기계 학습에서 자주 사용되고 있습니다.

이번 실험에 사용할 데이터를 pandas의 read_csv 함수를 사용하여

아래와 같이 pandas 데이터프레임으로 저장 하였습니다.

read_csv 함수에서 parse_dates 인자로날짜 타입인 열 이름( date)을 전달하고

index_col 인자로 date 열을 인덱스로 설정했습니다.

날짜 타입을 인덱스로 설정한 이유는 나중에 시계열 그래프를 그리기 위해서입니다.

dropna 함수를 사용하여 하나의 속성이라도 비어있는 열들은

실험에서 제외 하였습니다.

head 함수를 사용하여 상단의 데이터 값을 확인해 보겠습니다.

각 필드의 간략 설명은 다음과 같습니다.

경제 지표 관련 속성들이 부동산지수에 어떻게 영향을 미치는지 테스트 하기 위해서

금리, 환율 등의 경제지표 속성들을 실험에 포함했습니다.

예측 타겟은 한달 후의 한국감정원의 주택가격지수 중  주택매매지수 (‘tradeprice_sido_n1)입니다.

내가 이번달의 주택매매지수와 다른 경제 지표들을 알고 있을때

다음달의 주택매매지수를 예측할 수 있는지가 이번 실험의 타겟입니다.

시도단위의 매매지수이며 속성에서도 시도값이 따로 있을경우

속성 설명에 (시도)를 따로 적어두었습니다.

속성에 대한 개별적인 포스팅이 추가되면

해당 포스팅의 속성 설명로 링크로 계속 업데이트 하겠습니다.

전반적인 실험 과정을 전달하기 위해서 최대한 기본적인 내용만 실험에 포함해서 진행해보겠습니다.

여기서 더 다양한 속성들과 다른 실험 방식을 사용하는 예시는

추후 다른 포스팅에서 이어서 전달하려고 합니다.

‘region_cd’: ‘지역코드(시도)’,

‘year’: ‘연도’,

‘month’:’월’,

‘building_type’: ‘부동산타입’,
‘tradeprice_sido’ : ‘매매가격지수(시도)’,

‘construction_realized_amount’ : ‘건설기성액(백만원)’,

“cd”: “cd(91일물)“,
‘spirit_deposit_rate’: ‘정기예금금리’,

‘exchange_rate’: ‘환율’,

‘composite_stock_price_index’: ‘종합주가지수’,
‘economy_growth’: ‘경제성장률’,

‘exchequer_bond_three’ : ‘국고채3년‘,

‘household_loan_all’: ‘가계대출액(전국)’,
‘mortgage_all’ : ‘주택대출액(전국)’,

‘numberofnosells’:’미분양 가구수(시도)’,

‘unsalenum_c’:’공사완료후 미분양(민간,시도)’

데이터프레임의 info 함수를 사용해서 index 정보와 컬럼수, 전체 데이터 개수, 각 열의 타입을 확인합니다.

describe 함수를 사용하면 각 필드별로 평균값, 분포, 최소값 등을 간단히 확인할 수 있습니다.

범주형 속성도 있긴 하지만 일단은 별도 처리 없이 진행합니다.

 다음 포스팅에서는 본격적으로 실험을 시작하기 전에 matplotlib 을 사용하여

각 데이터의 분포를 확인해보겠습니다.

 이전 부동산 가격 실험 관련 포스팅

scikit-learn을 사용하여 부동산 가격 예측하기 : 1) target 설정 : 전국주택가격 지수

cd 금리와 부동산 가격 상관 관계 알아보기 (1)

참조: https://www.geeksforgeeks.org/python-pandas-dataframe-resample/

scikit-learn을 사용하여 부동산 가격 예측하기 : 1) target 설정 : 전국주택가격 지수

 

scikit-learn을 사용하여 부동산 가격 예측하기

1 ) target 설정 : 전국주택가격 지수

 

scikit-learn을 사용하여 부동산 가격 예측하기 실험을 연재해보겠습니다.

scikit-learn은 파이썬으로 구현된 기계학습 오픈소스 라이브러리로

보통 싸이킷 런이라 발음합니다.

다양한 기계 학습 알고리즘 동일한 함수로 사용할 수 있어서

알고리즘을 바꿔가면서 간단히 실험하기에 좋습니다.

scikit-learn에 대한 자세한 사용법은 다음 포스팅에 이어서 하겠습니다.

무엇보다 기계학습 실험을 하기 위해서는 실험 대상이 있어야 합니다.

향후 다양한 실험을 하면서 개별 매물 가격 등의 다양한 타겟들을 실험해보겠지만

이번 실험에서는 한국감정원의 전국주택가격 지수를 사용하려고 합니다.

 

전국주택가격지수는 한국감정원에서 매주 또는 월간으로

전국 아파트, 단독, 연립주택을 표본 조사해서 만든 하나의 수치로

주택 시장의 평균적인 가격변화를 측정하는 지표로 사용합니다.

자세한 내용은 아래 한국 감정원에서의

전국주택가격 지수 설명 링크를 참조할 수 있습니다.

 

한국 감정원 전국주택가격 지수 설명 링크

 

다른 주택가격지수들도 있지만 전국주택가격지수 데이터를 타겟으로 설정했던 이유는

시군구 단위의 가격지수를 제공한다는 점,

그리고 월간 데이터긴 하지만 아파트, 단독, 연립주택 지수를 주기 때문입니다.

 

 

 

전국주택가격지수 데이터는 공공데이터 포털에서 수집였고

아래 링크를 따라 가면 데이터 수집에 대한 자세한 설명을 확인할 수 있습니다.

 

데이터 제공 API: https://www.data.go.kr/dataset/15002287/openapi.do

 

그럼 다음 포스팅에서는 실험에 사용해볼 속성들에 대한 소개들을 해보겠습니다.

 

 

 

 

 

 

 

 

 

 

sklearn에서 missing value 처리하기 ( by pandas)

sklearn 에서 missing value 처리하기

실험에서 사용하는 데이터의 속성 필드 값이 비어있을 때

아래와 같은 에러 메세지를 확인할 수 있다.

Input contains NaN, infinity or a value too large for dtype(‘float64’).

sckit-learn 알고리즘은 기본적으로

모든 데이터가 다 값을 가지고 있을 거라 간주하기 때문에

비어있는 값을 발견하면 에러 메세지를 내고 종료를 한다.

이럴 경우 두 가지 방법 중 하나를 선택할 수 있다.

  • 비어있는 값을 가지고 있는 데이터를 제거 하거나 (데이터의 양이 충분한 경우)
  • 비어있는 값을 다른 값으로 치완할 수 있다.  (데이터가 부족하거나 아니면 그 데이터를 사용해서 실험을 해야 하는 경우)

각각의 케이스에 대해 어떻게 처리를 하는지 하나씩 확인해보겠다.

비어있는 값을 가지고 있는 데이터를 제거하는 것은

pandas 패키지의 dropna() 함수를 사용하면 간단하다.

아래는 read_csv 함수를 사용해서 임의의 csv 데이터를 읽어와서

pandas 의 dataframe으로 저장 후

dropna()함수를 사용해 본 예시이다.

dropna()를 사용하면 하나의 속성이라도

비어있는  열이 있으면  모두 드랍한다.

예시에서 사용한 데이터에는 중간 중간 비어있는 예시들이 많아서

dropna()를 사용하니

하나도 남아있는 데이터가 없었다 ; – ;

그럼 조건을 완화해서 함수 인자로 how=’all’을 지정하면

모든 속성이 다 비워져있는 열들만 삭제를 할 수 있다.

또는 N/A 값을 가질 수 있는 최소 개수를 thresh 인자로 명기할 수도 있다.

예시에서는 빈 값을 가질 수 있는 필드를 최소 2개 로 설정해 보았다.

조건에 맞는 데이터들이 노출되는 것을 확인 할 수 있다.

마지막으로 빈 값을 검사하는 필드 이름도 subset 인자로 지정할 수 있다.

사실 비어있는 데이터를 포함하고 있는 것은 지가지수 속성이었기 때문에

전체적으로 빈 값이 리턴되고 있다.

이 외 자세한 내용은 아래 pandas 웹 페이지를 확인 할 수 있다.

다음 포스팅에서는 빈 값을  다른 값으로 대체하는 방법을 확인해보겠다.

참고:  https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html

cd 금리와 부동산 가격 상관 관계 알아보기

 

오늘은 cd금리와 부동산 가격의 상관 관계를 알아보겠습니다.

일단 실험을 하기전에 cd금리가 무엇인지 먼저 확인할 필요가 있습니다.

CD금리에서 CD는 양도성예금증서라는 뜻입니다. 말 그대로 예금이긴 한데 다른 사람에게 양보할 수 있는 예금증서의 금리입니다.

CD 만기는 30일 이상이며 주로 91일(3개월물)이나 181일(6개월물) 금리가 대표적입니다.

은행에서는 단기 자금이 부족하면 CD를 발행하여 단기 자금을 조달하며 이렇게 조달된 금액은 다시 대출로 사용되기도 합니다. 은행 입장에서는 CD를 발행하여 그 금액으로 다시 대출을 하주기 때문에 적어도 예대마진을 남기기 위해서 대출금리를 CD금리 이상은 받아야 합니다. 그렇기 떄문에 CD 금리가 인상되면 대부분의 대출 금리가 상승으로 이어집니다.

코픽스 이전엔 CD금리가 주택담보대출 금리의 기준 역할을 했습니다. 과거 양도성예금증서의 발행이 많을 때에는 CD금리만으로 은행의 비용 산정을 하는 것에 무리가 없었지만 현대에는 은행들의 자금 차입 방법이 다양해지면서 CD금리만으로 정확한 비용이 산출되기 어렵다는 문제가 발생하였습니다. 그래서 2010년 2월 16일 부터 코픽스가 CD금리를 대체해 주택담보대출의 기준금리가 됐습니다.

cd금리와 주택매매지수를 그래프로 확인해보겠습니다. 

부동산 분석 서비스 로보리포트 – cd금리 그래프

지금 로보리포트에서 준비하고 있는 빅데이터 분석 대시보드에서는 경제 지표와 부동산 가격의 그래프를 바로 확인할 수 있습니다.

대시보드에서 cd금리와 서울시 주택매매지수, 경기도 주택매매지수를 선택해 보았습니다. 선택한 시기만 확인해보자면 cd금리가 올라가면 어느정도 시간차를 두고 매매지수가 떨어지고, cd금리가 내려가면 매매지수가 올라가는 것 같은 양상을 보이고 있습니다.

cd 금리가 부동산 가격에 단기, 중기, 장기로 어떻게 영향을 끼치는 가에 대한 분석은 다른 포스팅에서 이어서 설명하도록 하겠습니다.