DB/ML

[머신러닝] 범죄율(CRIM)로 집값 예측하기

콩다영 2023. 12. 20.
728x90

 

[ 범죄율로 집 값 예측하기 ]

 

scikit-learn을 사용하여 선형 회귀를 직접 연습하기.

 

 

  • CRIM : 동네의 범죄율
  1. 범죄율 열을 선택
  2. training-test set 나누기
  3. 모델을 학습
  4. test 데이터로 예측

 

< 조건 >

- 입력 변수로는 범죄율 열만 이용.

- train_test_split 함수의 옵셔널 파라미터는 test_size = 0.2, random_state = 5

- 예측 값 벡터 변수 이름은 y_test_predict

 

# 필요한 라이브러리 import
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

import pandas as pd  


# 보스턴 집 데이터 갖고 오기
boston_house_dataset = datasets.load_boston()


# 입력 변수를 사용하기 편하게 pandas dataframe으로 변환
X = pd.DataFrame(boston_house_dataset.data, columns=boston_house_dataset.feature_names)

# 목표 변수를 사용하기 편하게 pandas dataframe으로 변환
y = pd.DataFrame(boston_house_dataset.target, columns=['MEDV'])


X = X[['CRIM']]  # 범죄율 열만 사용


# train_test_split를 사용해서 주어진 데이터를 학습, 테스트 데이터로 나눈다
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=5)


linear_regression_model = LinearRegression()  # 선형 회귀 모델을 가지고 오고 
linear_regression_model.fit(X_train, y_train)  # 학습 데이터를 이용해서 모델을 학습 시킨다


y_test_predict = linear_regression_model.predict(X_test)  # 학습시킨 모델로 예측


# 평균 제곱 오차의 루트를 통해서 테스트 데이터에서의 모델 성능 판단
mse = mean_squared_error(y_test, y_test_predict)

mse ** 0.5

 

 

※ load_boston() 은 scikit-learn 1.2 버전부터는 지원되지 않음을 주의.

 

 

728x90
반응형

댓글