본문 바로가기
  • 紹睿: 자유롭고 더불어 사는 가치있는 삶
Study/파이썬으로 데이터 주무르기

[Linear regression] 단일선형회귀분석 실습

by 징여 2018. 7. 9.
반응형

단일 선형회귀분석 실습¶

pacakge설명¶

  • pandas : 데이터 분석, 가공, 처리 등을 쉽게 하기 위한 자료구조와 처리 함수들을 제공하는 패키지
  • numpy : 파이썬 언어를 위한 행렬, 벡터 등의 수학 계산을 위한 자료구조와 계산 함수를 제공하는 패키지
  • pandas : 데이터 분석, 가공, 처리 등을 쉽게 하기 위한 자료구조와 처리 함수들을 제공하는 패키지
  • matplotlib : 플롯(그래프)를 그릴 때 주로 쓰이는 2D, 3D 플롯팅 패키지
  • matplotlib.pyplot : matplotlib의 서브패키지로 *MATLAB 처럼 플롯을 그려주는 패키지
  • pandas : 데이터 분석, 가공, 처리 등을 쉽게 하기 위한 자료구조와 처리 함수들을 제공하는 패키지
In [41]:
from sklearn import linear_model
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
matplotlib.style.use('ggplot')
/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
  return f(*args, **kwds)
In [46]:
data = {'x': [13, 19, 16, 14, 15, 14],
           'y': [40, 83, 62, 48, 58, 43]}
data = pd.DataFrame(data)
data
Out[46]:

x

y

0 13 40
1 19 83
2 16 62
3 14 48
4 15 58
5 14 43

데이터를 scatter를 이용하여 뿌리기¶

In [45]:
data.plot(kind="scatter", x='x', y='y',color="black")
Out[45]:
<matplotlib.axes._subplots.AxesSubplot at 0x116cdbc50>

데이터 학습시키기¶

In [48]:
linear_regression = linear_model.LinearRegression()
linear_regression.fit(X=pd.DataFrame(data["x"]), y= data["y"])
prediction = linear_regression.predict(X=pd.DataFrame(data["x"]))
print("a value: ", linear_regression.intercept_)
print("b value: ", linear_regression.coef_)
a value:  -55.48175182481753
b value:  [7.32846715]

적합도 검증¶

In [49]:
residuals = data["y"] - prediction
residuals.describe()
Out[49]:
count    6.000000e+00
mean     5.921189e-15
std      2.491445e+00
min     -4.116788e+00
25%     -5.164234e-01
50%      2.189781e-01
75%      7.189781e-01
max      3.554745e+00
Name: y, dtype: float64
In [50]:
#잔차 제곱 합
SSE = (residuals**2).sum()
SST = ((data["y"]-data["y"].mean())**2).sum()
R_squared = 1-(SSE/SST)
print("R_squared: ", R_squared)
R_squared:  0.9753156179610034
In [51]:
data.plot(kind="scatter", x = 'x', y='y', color="black")
plt.plot(data['x'], prediction, color='blue')
Out[51]:
[<matplotlib.lines.Line2D at 0x116daa9e8>]

성능평가 하기¶

In [52]:
from sklearn.metrics import mean_squared_error
print('score: ', linear_regression.score(X=pd.DataFrame(data["x"]), y=data["y"]))
print('Mean Squared Error: ', mean_squared_error(prediction, data["y"]))
print("RMSE: ", mean_squared_error(prediction, data["y"])**0.5)
score:  0.9753156179610034
Mean Squared Error:  5.172749391727503
RMSE:  2.2743679103714736


반응형

댓글