[머신러닝]주택 가격 예측하기 회귀 분석

리냥·2023년 9월 10일
0

[머신러닝]주택 가격 예측하기 회귀 분석

캐글 주택 가격 예측 사이트

위 사이트에서 API를 받아 먼저 주피터로 작동시켰다.

1. 데이터 다운로드




2. 데이터 로드


데이터를 로드하는데, 다음날 갑자기 에러가 생겨 그냥 절대경로로 바꾸고 로드했다.


3. 기존 데이터 분석


이제 데이터 분석을 시행했다.
먼저 타킷 변수인 'Sale Price'의 가격을 확인해야 한다.


seaborn, matplotlib을 사용해 분포, 로그를 취한 분포 총 2개의 그래표를 작성했다.




다음은 히트맵 그래표를 활용해 상관관계를 확인했다.



히트맵 그래표를 통해

  • 변수 'OverallQual'이라는 변수가 상관계수 0.79로 타켓변수와 가장 큰 상관관계를 가짐
  • OverallQual이 증가하면 집값도 증가함
  • GrLuvArea가 두 번째로 높음

를 알 수 있었다.

4. 데이터 처리


계획은 이와 같다.
  • train과 test를 묶어서 all_data라는 변수에 저장한 후 이를 처리함
  • 이후 머신러닝 학습 전에 자를 예정
  • 타켓 변수를 미리 Ytrain으로 빼서 저장

이후 전체 데이터에서 결측치를 확인한다.

결측치를 통해 삭제한다.



5. EDA


5-1. 총 가용면적

먼저 총 가용면적을 분석했다.

  • 지하실, 1층, 2층 면접을 합한 '총 면적'(total)변수를 추가로 만듦
  • 이를 통해 총 면적이 증가하면, 집값이 더 비싸진다고 볼 수 있음
  • 이들을 더해서 'TotalSF'란 이름으로 저장





5-2. 총 욕실 수

먼저 총 욕실 수를 분석했다.

  • 욕실 개수는 'FullBath', 'HalfBath', 지하에 있는지 여부를 더 해 하나로 만듦
  • FullBath는 1개로 카운트, HalfBath는 0.5개로 카운트함




  • 욕실의 수가 많을 수록 집값이 비싸진다고 볼 수 있음
  • 5개, 6개인 집들은 편차가 있는데 5,6개인 집은 하나씩 밖에 없음
  • 따라서 outlier로 지울 것



5-3. 건축연도 + 리모델링 연도

먼저 건축연도 + 리모델링 연도를 분석했다.

  • 이 둘은 상당히 비슷한 분포로 데이터가 이루어져 있었음
  • 이 둘을 모두 포함하는 데이터를 만듦


  • 건축연도, 리모델링 연도, 둘의 평균
  • 건축연도가 오래 되었어도, 최근에 리모델링을 하면 값이 높게 나왔을 것이라 판단해 평균



5-4. 지하실 점수

집의 시설물을 묶어서 점수를 매기기로 결정

  • 지하실에 관한 변수들을 묶어서 저장
  • 'Po', 'Fa'등 data description 텍스트 파일에 나와있던 것처럼
  • 순서대로 좋은 값엔 높은 숫자를, 지하실이 없으면 0 입력
  • 'BsmtFinScore' 지하실의 완성도 점수, 'BsmtScore' 지하실의 종합 점수, 'BsmtDNF' 지하실의 미완성 여부





5-5. 토지 점수

토지점수도 위와 같은 방법으로 시행했다.


5-6. 차고 점수

차고점수도 위와 같은 방법으로 시행했다.



6. 전처리


- **범주형 변수**와 **수치형 변수**로 나누어 처리했다. - 범주형 변수는 **원핫 인코딩**을 했고 수치형 변수는 **Right Skewed가 된 데이터에만 로그**를 씌어 변형시켰다. - 이후 전에 합친 데이터(all_data)를 나누어 test 데이터에 저장한다.

6-1. 범주형 변수



6-2. 수치형 변수



6-3. 데이터 나누기



7. 머신러닝


  • Lasso, ElasticNet, Sklearn의 GradientBoosting 총3개
  • 3개의 모델의 예측값의 평균값 사용


리뷰

  • 처음 데이터 로드하는 과정에서 왜 오류가 났는지 해결 x
  • 중간에 지하실 점수 EDA 과정에서 자료형 오류가 났는데 해결 x
  • EDA 과정에서 이상한 값들 제거 pass 함
  • 머신러닝 과정은 팀원들과 상의해서 변경할 것
  • 중간에 자잘한 오류가 많이 났는데 해결을 했으나 이해는 못함

본 블로그

https://jamm-notnull.tistory.com/12#google_vignette
(보고 데이터분석부터 따라했다. 정말 잘 나와있으니 혼자 못하겠으면 따라해도 좋음)

profile
안녕하세요. 일로 인해 잠시 쉽니다 :)

0개의 댓글