클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

머신러닝 5 - 주택 가격 예측 선형회귀 모델 실습 1 : 문제 정의에서 데이터 전처리 및 탐색까지 본문

인공지능/머신러닝

머신러닝 5 - 주택 가격 예측 선형회귀 모델 실습 1 : 문제 정의에서 데이터 전처리 및 탐색까지

huenuri 2024. 9. 17. 06:34

오늘은 저녁에 별로 공부를 하고 싶은 마음이 들지 않았지만 그래도 잠시 운동을 한 후 책상 앞에 앉아 공부를 시작해본다. 저녁에 둘째날 수업을 모두 학습하기는 어렵고 조금이라도 해볼 생각이다. 이어서 선형 회귀 모델에 대해서 학습해보자.


 

 

 

선형회귀 모델 실습해보기

지난 시간까지 선형회귀 모델에 대한 개념과 사용방법에 대해 다루어보았다. 이번 시간에는 데이터를 가져와서 주택 가격을 예측하는 실습을 진행해볼 것이다.

 

 

 

 

6번은 생략하고 하나씩 실습해보기로 하자.


 

 

 

3. 데이터 전처리 및 탐색

 

방의 수, 가격, 거리, 위도, 경도 등 많은 정보가 들어있는 주택 데이터셋이다. 데이터셋을 요약해서 알려주는 정보를 출력해보자.


 

데이터 정보 확인

21개의 컬럼 중에서 입력 특성으로 사용할만한 것이 무엇이 있는지, 정답으로 사용하면 좋을 것들을 판단해본다. 우리의 목표는 주택의 가격을 예측하는 모델을 만드는 것이기 때문에 price가 정답이 되고, 나머지는 입력 특성의 후보가 된다. 왜 후보라고 했을 때 그건 입력 특성을 다 넣는다고 해서 좋은 결과가 나오는 건 아니기 때문이다.

관련이 있는 특성을 넣어 모델링을 하는 것이 중요하다. 관련 없는 특성을 넣으며 오히려 모델이 헤깔릴 수 있다.

 

특성 선택은 데이터가 적을수록 중요도가 커진다. 인공지능의 목표는 사람의 손을 타지 않고 예측하게 만드는 것이 궁극적인 목표이다. 따라서 딥러닝으로 넘어갈수록 특성 선택에 대해 중요하게 생각하지 않는다. 딥러닝은 데이터가 아주 많다는 가정하에 진행하기 때문이다.

모든 객체 위에 있는 클래스가 object이고 object 타입이면 문자열 타입일 가능성이 매우 높다.

 

 

 

각 컬럼들에 대한 설명이다.


 

기술 통계량 확인하기

 

 

 

include 속성은 데이터 타입에 맞는 것을 선택해서 확인이 가능하다.  include를 all로 하면 범주형 데이터인 unique, top, feq도 추가되었다.

 

 


 

 

데이터 시각화하기

 

1. BoxPlot으로 그리기

 

박스 플롯의 가운데 선은 중위값을 의미한다. 위쪽의 동그라미는 이상치이다. 방의 분포에 따른 가격을 박스 형태로 그려주고 있다. 방의 개수가 늘어나면 가격이 상승하는 형태인데 5개 이상이 되면 편차가 별로 크지 않다.


 

 

2. 데이터 추출하기

 

 

이상치의 임계치도 알아낼 수 있다. 그런 다음 임계치 이상의 값을 제거하면 이상치 삭제도 가능하다.


 

 

 

groupby를 하면 이걸 제외한 나머지 부분이 집계함수에 영향을 받는다.


 

 

 

3. bar 차트로 그리기

이제 다른 그래프로 그려보기로 하자. 시본 홈페이지에서 다음과 같은 그래프를 그려볼 것이다.


 

 

 

 

위도와 경도에 따른 주택 가격 예측하기

 

 

 

위도나 경도에 따라 주택 가격이 어느 정도 영향이 있는지 알아보기로 하자.


 

1. 위도에 따른 그래프

 

그래프가 등고선처럼 그려진다. 하지만 그래프가 어느 쪽에 많이 분포되어 있는지 알기 어렵다. 이럴 때 밀집된 부분은 색상을 진하게 표시하는 속성을 추가해준다.

 

 

 

가장 밀집되어 있는 가격대를 확인할 수 있다.


 

 

 

2. 경도에 따른 그래프

 

위도와 경도를 다르게 설정하여 주택 가격을 살펴보았다. 이번에는 위도와 경도를 함께 놓고 밀집된 곳을 살펴보자.


 

 

3. 위도와 경도에 따른 그래프

 


 

 

 

학습을 마치고

이렇게 해서 주택 가격을 예측하는 선형 회귀 모델 실습을 진행해보았다. 테이블만 생성할 때보다 그래프로 시각화하니 훨씬 보기가 좋고 눈에 확 들어왔다. 학습일지를 쓰면 좋은 점은 선생님과 수업 시간에 작성한 코드에 덧붙여서 나만의 코드를 작성해볼 수 있고, 진행 과정을 더 자세히 쓸 수 있다는 것이다.

앞으로 2시간 정도 더 수업이 남아있는데 이어서 다음 학습을 진행해볼 것이다.