관리 메뉴

DeseoDeSeo

[Machine Learning ] ex09_보스턴 집값 예측 실습 본문

Python

[Machine Learning ] ex09_보스턴 집값 예측 실습

deseodeseo 2023. 9. 7. 18:35
  • 입력 데이터를 완벽하게 설명하는 것을 불가능. ➜ 오차가 가장 작은 선형함수를 찾아야함.
  • 오차가 가장 작은 선형함수를 찾는다는 것? ➜ 평균제곱오차(MSE)가 가장 작은 선형함수를 찾는다.
  • 평균제곱오차(MSE)가 가장 작은 선형함수 ➜ 최적의 선형 함수

ミ★ 평균제곱오차가 가장 작은 선형함수를 찾는 방법

  1. 수학 공식을 이용한 해석적 방법(공식으로 해결)
    • 장점: 적은 계산으로 구함 ➜ 한번에 최적의 선형함수를 찾음.
    • 단점 : 공식이 완벽하지 않을 경우 잘못 찾을 수도 있고 공식을 고칠 수 없는 문제
  2. 경사하강법
    • 점진적으로 오차가 작은 선형함수를 찾아가는 방법(오차를 수정)
    • 장점) 잘못 찾았을 때 수정 가능
    • 단점) 점진적으로 찾아가므로 계산량이 많음.(➜ 시간이 오래걸림)

 

 ➤ 문제정의

  • 보스턴 주택 가격데이터를 사용하여 집값을 예측해보자.
  • 회귀모델을 적용.
  • LinearRegression, SGDRegressor
1) 데이터 수집
import warnings
warnings.filterwarnings('ignore')

from sklearn import datasets
x,y = datasets.fetch_openml('boston',return_X_y= True)
x['CHAS'] = x['CHAS'].astype('int64')
x['RAD']=x['RAD'].astype('int64')

 

2) 문제와 정답 합치기
import pandas as pd
total = pd.concat([x,y],axis=1)
total

 

3) 데이터 전처리
 - 
결측치. 이상치 확인 단계
 -   
데이터 전처리 생략
4) EDA : 탐색적 데이터 분석
    : 
상관관계 분석
  • 피어슨 상관계수 : 두 컬럼의 선형도 판단
# 관계를 시각적으로 확인하기.
import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize= (12,12))
sns.heatmap(total.select_dtypes(include=['int64','float64']).corr(),annot=True)
plt.show()

○ heatmap( ): 시각적으로 뚜렷한 차이를 확인 ➜ 데이터를 전처리 할때 우선순위를 판단하는 근거
○ 모델을 학습하는데 시간이 많이 걸린다.
○ 데이터를 줄여야 함( 서비스를 제공할 때도 시간을 줄이자는 의미.)
○ 가지고 있는 문제(특성)들 중에서 상관도가 낮을때 부터 삭제를 하고 
○ 추가적으로 전처리를 해야하는데 시간이 부족하다 할 때는 상관도가 높은것부터 차례로 전처리 함

 

5. 모델 선택 및 하이퍼파라미터 튜닝
# 수학적 공식을 이용한 해석적 모델
from sklearn.linear_model import LinearRegression
linear_model=LinearRegression()

# 경사하강법
from sklearn.linear_model import SGDRegressor
sgd_model = SGDRegressor()

 

6) 훈련과 평가로 분리
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size = 0.3, random_state=10)
6-1) 학습
linear_model.fit(x_train,y_train)
sgd_model.fit(x_train, y_train)
6-2) 예측