반응형
파이썬에서 다중 회귀분석 하는 방법을 알아봅시다. 설명은 주석에 달아놓았습니다. 절차를 간단히 설명하겠습니다.
- boston 집값 데이터를 불러옴
- 독립변수 종속변수를 추출하고 데이터프레임으로 만듦
- 상관관계 행렬 그래프를 그려봄
- 데이터를 train set과 test set 으로 분할함
- 데이터를 정규화함 (min max)
- 회귀 모델을 학습함
- train 데이터로 평가함
- test 데이터로 평가함
평가지표는 mse(mean squared error), rmse, $R^2$ 입니다.
import pandas as pd
import numpy as np
from sklearn.datasets import load_boston
########################################
#데이터 불러오기
boston=load_boston()
#독립변수, 종속변수 변수 생성
x=boston.data
y=boston.target
#데이터프레임으로 만들기
df=pd.DataFrame(x,columns=boston.feature_names)
df['PRICE']=y
########################################
#데이터 살펴보기
df.T
df.shape
df.info()
df.isna().sum() #결측치 확인
########################################
#상관관계 행렬 그래프 그리기
import matplotlib.pyplot as plt
import seaborn as sns
corr = df.corr() #상관관계 행렬
sns.heatmap(corr, annot=True,
vmax=1, vmin=-1, center=0, cmap='vlag')
plt.show()
########################################
#데이터 분할
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=99)
#Min-max 정규화
from sklearn.preprocessing import MinMaxScaler
x_train_scaled=MinMaxScaler().fit_transform(x_train)
x_test_scaled=MinMaxScaler().fit_transform(x_test)
########################################
#회귀분석 수행
##모델학습
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x_train_scaled,y_train)
##train 데이터로 평가
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
x_train_pred=lr.predict(x_train_scaled)
mse=mean_squared_error(y_train,x_train_pred)
rmse=np.sqrt(mse)
r2=r2_score(y_train,x_train_pred)
print('mse: {:.2f}'.format(mse))
print('rmse: {:.2f}'.format(rmse))
print('r2: {:.2f}'.format(r2))
##test 데이터로 평가
x_train_pred=lr.predict(x_train_scaled)
mse=mean_squared_error(y_train,x_train_pred)
rmse=np.sqrt(mse)
r2=r2_score(y_train,x_train_pred)
print('mse: {:.2f}'.format(mse))
print('rmse: {:.2f}'.format(rmse))
print('r2: {:.2f}'.format(r2))
회귀계수와 절편을 출력하는 방법은 아래와 같습니다.
>>> lr.coef_
array([-1.10076150e+01, 4.56642180e+00, 5.69080470e-01, 1.91614625e+00,
-7.05740571e+00, 2.01227498e+01, -1.58800661e-03, -1.60490873e+01,
6.29081905e+00, -6.25426937e+00, -8.71864884e+00, 2.90024095e+00,
-1.89181408e+01])
>>> lr.intercept_
27.119267954463865
반응형
'머신러닝 (지도학습) > 회귀분석' 카테고리의 다른 글
[파이썬 머신러닝] 다항 회귀분석 (보스턴 집값) (0) | 2023.09.07 |
---|
댓글