Linear Regression Example
원본 사이트: https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html
선형 회귀 예시
아래 예시에서는 2차원 공간에서 데이터 포인트를 설명하기 위해 diabetes
데이터 세트의 첫 번째 특성만 사용합니다. 그래프에서 보이는 직선은 선형 회귀로 표현된 직선이 얼마나 데이터를 잘 나타낼 수 있는지 보여줍니다. 즉, 데이터 세트의 관측 결과와 선형 근사에 의해 예측된 결과값의 잔차 제곱합을 가장 최소화하는 직선을 그린다는 것을 의미합니다.
계수, 잔차 제곱합 그리고 결정 계수 또한 계산됩니다.
# 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
댓글남기기