티스토리 뷰

다중선형회귀분석 실습 1
In [18]:
(1) Python package 로드 및 matplotlib 출력 옵션 설정
In [19]:
# 사용할 패키지들을 불러와서 포함시키는 코드이다.
# python package들을 가져오는 것과 matplotlib 출력 옵션 설정에 대한 내용이다.
from sklearn import linear_model
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
matplotlib.style.use('ggplot')
In [20]:

(2) 데이터 생성

In [21]:
data = {'x1' : [13, 18, 17, 20, 22, 21],  
       'x2' : [9, 7, 17, 11, 8, 10],
       'y' : [20, 22, 30, 27, 35, 32]}
# data 변수 안에 dictionary형태의 x1, x2, y key 이름을 가진 데이터를 생성한다.

data = pd.DataFrame(data)                 
# data변수 안에 저장된 데이터를 pandas.DataFrame 함수를 통해 2차원의 수정 가능한 테이블 형태의 구조로 변경 후 data 변수에 저장

X = data[['x1', 'x2']]                   
# 독립변수들을 따로 변수에 저장. "data"데이터 프레임 안에 독립변수 "x1"과 "x2"를 "X"라는 변수에 저장.

y = data['y']
data
Out[21]:
x1 x2 y
0 13 9 20
1 18 7 22
2 17 17 30
3 20 11 27
4 22 8 35
5 21 10 32
In [22]:

(3) 데이터 학습

In [23]:
# 앞의 단일 선형회귀모델 실습에서 보신 내용과 동일한 코드를 이용하여 학습을 진행한다.
# 하나의 a값과 두 개의 b값이 출력된다. b값은 독립변수 개수만큼 생성되기 때문이다.
linear_regression = linear_model.LinearRegression()
linear_regression.fit(X = pd.DataFrame(X), y = y)
prediction = linear_regression.predict(X = pd.DataFrame(X))
print('a value = ', linear_regression.intercept_)
print('b value = ', linear_regression.coef_)
a value =  -7.35920177383591
b value =  [1.5443459  0.62472284]
In [24]:

(4) 적합도 검증

In [25]:
# 적합도 검증 - 잔차
residuals = y-prediction
residuals.describe()
Out[25]:
count    6.000000e+00
mean    -4.144833e-15
std      2.622371e+00
min     -3.399667e+00
25%     -1.987805e+00
50%      5.828714e-01
75%      1.415327e+00
max      3.385809e+00
Name: y, dtype: float64
In [26]:
# 적합도 검증 - 결정계수
SSE = (residuals**2).sum()
SST = ((y-y.mean())**2).sum()
R_squared = 1 - (SSE/SST)
print('R_squared = ', R_squared)
R_squared =  0.7969440176685232
In [27]:
# 출력된 결정계수 79.6%는 독립변수들이 종속변수에 상당한 영향을 주는 것을 말한다.
In [28]:

(5) 성능 평가

In [29]:
# 생성된 회귀분석모델에 대한 결정계수 MSE, RMSE를 구해보자. 
from sklearn.metrics import mean_squared_error
print('score = ', linear_regression.score(X =pd.DataFrame(X), y=y))
print('Mean_Squared_Error = ', mean_squared_error(prediction, y))
print('RMSE = ', mean_squared_error(prediction, y)**0.5)
score =  0.7969440176685232
Mean_Squared_Error =  5.730691056910565
RMSE =  2.393886182948255
In [30]:
# RMSE가 2.39 정도로 오차도 작은 것을 확인했다.
In [ ]:

출처 - 파이썬을 이용한 데이터 분석


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함