1. Operating System : mac OS (Sequoia 15.0.1(24A348))
2. Language : Python (3.9.6)
3. Web Environment : Safari(version 18.0.1(20619.1.26.31.7)-Jupyter Notebook)
4. Directory :
├─RoomBuddy
│ └─Jupyter Notebook
│ │ │ 서울시 집값 데이터 분석.ipynb
│ └─Image
│ │ │ XGBRegressor 특성 중요도.png
│ │ │ 다중회귀ㅜ 특성 중요도.png
│ │ │ 서울 자치별 연간 거래횟수 변화.png
│ └─README.MD
대부분의 사람은 아니지만, 많은 사람들이 집을 갖기 위해서 평생을 일하고, 살아가지만 정작 부동산을 구매하는 것 자체가 힘들다.
어떻게 해야 사람들이 본인에게 맞는 집을 찾을 수 있을지에 대해서, 항상 궁금증을 가졌었고 이 프로그램은 다른 사람들이 사용해도 되지만, 나를 위한 프로그램이다.
집값에 영향을 미치는 요소가 어떤게 있는지, 이번 프로젝트를 통해 구체화 시키고, 이를 바탕으로 웹페이지를 구현할 것이다.
Technique | Language | Purpose |
---|---|---|
Back-end | Flask | 백엔드 조성 |
Front | React | 프론트엔드 조성 |
Data-Analysis | Pandas | 데이터 가공 |
Machine-Learning | scikit-learn, xgboost | 데이터 학습 |
1. 서울시 범죄 발생 현황 (범죄가 많이 발생할 수록, 부동산 가격이 하락할 것으로 예상)
2. 서울시 범죄 검거 현황 (발생 현황과는 다르게 검거율이 높을수록, 부동산 가격이 상승할 것으로 예상)
3. 서울시 고용률 현황 (고용률이 높으면, 사람들의 풍요도가 높아져 부동산 가격의 상승에 영향을 미칠것으로 예상)
4. 서울시 실업률 현황 (실업률이 높으면, 부동산을 사려고 하는 사람이 줄어들어, 부동산 가격이 하락할 것으로 예상)
5. 서울시 병원수 현황 (각 자치구별로 병원 수가 더 많은 곳에 사람들이 거주할 것으로 예상)
6. 소비자 물가 지수 (소비자 물가지수가 오르는 만큼, 부동산 가격도 상승할 것으로 예상)
Step 1. 부동산 실거래가 데이터를 병합한 후, 필요한 부분만 남기기
Step 2. 범죄율 데이터를 가공 후 부동산 데이터와 결합
Step 3. 고용률, 실업률 현황 가공 후 이전 데이터와 결합
Step 4. 병원수 현황 가공 후 이전 데이터와 결합
Step 5. 소비자 물가 지수 가공 후 이전 데이터와 결합
Analysis 1. 전반적인 부동산 거래횟수는 10년전 대비 많이 감서한 모습을 보입니다.
Analysis 2. 2015년 거래(많음) > 2019년 거래 (적어짐) > 2020년 거래 (활발) > 2023년 거래 (많이 떨어짐)
Analysis 3. 거래가 가장 많았던 구(전체) : 강서구(10만 6천건) > 송파구(9만 2천건) > 은평구(9만건) > 노원구(8만 9천건) > 강남구(7만 4천건)
Analysis 4. 거래가 가장 많았던 동(전체) : 화곡동(4만 5천건) > 상계동(3만 6천건) > 봉천동(2만 8천건) > 신림동(2만 7천건) > 구로동(2만 4천건)
Analysis 5. 전체 건수도 중요하지만, 해마다 각 구의 선호도가 어떻게 변화하는지 판단했습니다. (주피터 노트북 참조)
Analysis 6. 전체 동 거래횟수가 1인 값이 존재했고, 해당 값이 1이면 회귀모델을 학습시키는데 있어서 어려움이 있어서 1인 데이터(8개)의 값에 대하여 거래금액에 노이즈를 섞어서 8개의 데이터를 16개로 만들었고, 전체 동 거래횟수가 2가 되도록 만들었습니다.
Step 1. 가장 먼저 다중회귀 모델을 사용했습니다.
[다중 회귀모델] 훈련 R^2 : 0.7293813474021864
[다중 회귀모델] 테스트 R^2 : 0.7199010115184508
- 다중 회귀모델에서 세트에 대한 값이 높지 않았고, 각 특성의 중요도를 고려했을 때, 평수가 높아지면 집값이 올라가야 하는 부분에 있어서 해당 모델이 집값의 상승과 평수의 값을 음의 상관관계가 있다고 분석해, 해당 모델이 적합하지 않다고 판단했습니다.
Step 2. 다음으로 XGBRegressor 모델을 사용했습니다.
[XGB Regressor] 훈련 R^2 : 0.9863738760340695
[XGB Regressor] 테스트 R^2 : 0.9492595702741051
- XGBRegressor 모델은 점수가 낮지도 않았고, 과적합된 모습도 보이지 않아서 해당 모델의 파라미터만 조금 조정해주면 좋은 결과가 나올것이라고 예측했습니다.
Step 3. 마지막으로 LGBMRegressor 모델을 사용했습니다.
[LGB Regressor] 훈련 R^2 : 0.9659473029709253
[LGB Regressor] 테스트 R^2 : 0.945068483323345
- XGBR과 마찬가지로 좋은 점수가 나와서, 해당 모델을 적절하게 훈련시켜보겠습니다.
Step 1.
Step 1.
Step 1.
최종 데이터셋 : Final_data.csv
데이터 개수 : 1508196개
기간 : 2014 ~ 2023년의 데이터
특성수 : 68개
학습 모델에 대한 최고 점수 : 훈련 > 98.6%
: 테스트 > 95%