1 분 소요

원본 사이트: https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html


선형 회귀 예시

아래 예시에서는 2차원 공간에서 데이터 포인트를 설명하기 위해 diabetes 데이터 세트의 첫 번째 특성만 사용합니다. 그래프에서 보이는 직선은 선형 회귀로 표현된 직선이 얼마나 데이터를 잘 나타낼 수 있는지 보여줍니다. 즉, 데이터 세트의 관측 결과와 선형 근사에 의해 예측된 결과값의 잔차 제곱합을 가장 최소화하는 직선을 그린다는 것을 의미합니다.

계수, 잔차 제곱합 그리고 결정 계수 또한 계산됩니다.

image.png

# Code source: Jaques Grobler
# License: BSD 3 clause

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score

# diabetes 데이터 세트 불러오기
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)

# 한 개의 특성만 사용합니다.
diabetes_X = diabetes_X[:, np.newaxis, 2] # 대부분의 추정기는 입력 데이터로 2차원을 기대하기 때문에 np.newaxis로 차원을 늘렸다.

# 데이터를 학습/테스트 데이터 세트로 분할합니다.
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# 타겟값을 학습/테스트 데이터 세트로 분할합니다.
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]

# 선형 회귀 객체를 생성합니다.
regr = linear_model.LinearRegression()

# 학습 데이터 세트로 모델을 훈련시킵니다.
regr.fit(diabetes_X_train, diabetes_y_train)

# 테스트 데이터 세트에 대한 모델 예측
diabetes_y_pred = regr.predict(diabetes_X_test)

# 계수
print("Coefficients: \n", regr.coef_)
# 잔차 제곱의 합(MSE; Mean Squared Error)
print("Mean squared error: %.2f" % mean_squared_error(diabetes_y_test, diabetes_y_pred))
# 결정 계수: 완벽한 예측이라면 1입니다.
print("Coefficient of determination: %.2f" % r2_score(diabetes_y_test, diabetes_y_pred))

# 그래프 출력
plt.scatter(diabetes_X_test, diabetes_y_test, color="black")
plt.plot(diabetes_X_test, diabetes_y_pred, color="blue", linewidth=3)

plt.xticks(())    # x 축 눈금 값 제거
plt.yticks(())    # y 축 눈금 값 제거

plt.show()
Coefficients: 
 [938.23786125]
Mean squared error: 2548.07
Coefficient of determination: 0.47
<Figure size 432x288 with 1 Axes>

ⓒ 2007 - 2021, scikit-learn developers (BSD License). Show this page source

댓글남기기