Linear Regression(수치예측) : 선형회귀분석

 

- 종속변수 y와 한 개 이상의 독립변수(설명변수) x와의 선형 상관 관계를 모델링 하는 회귀분석 기법

- 선형 회귀를 사용해 데이터에 적합한 예측 모형을 개발해 값 예측 가능

- 일반적으로 최소제곱법을 이용해 모델 세움( 손실 함수도 사용 가능) 

- 단순 선형 회귀, 다중 선형 회귀

 

 

1. 단순 선형 회귀 - diabetes 데이터 이용

# 0. 라이브러리 불러오기
from sklearn.linear_model import LinearRegression
from sklearn import datasets
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd


# 1. diabetes dataset loading
diab = datasets.load_diabetes()


# 2. 네번째 feature 선택 -> 선형이기 때문에 하나의 x에 대해서만!
diab_X = diabetes.data[:,np.newaxis,3]  # 네번째 있는 칼럼을 수직방향으로 뽑아줌


# 3. 데이터 추출 확인
diab_X[0]


# 4. split data
diab_X_train = diab_X[:-20]
diab_X_test = diab_X[-20:]

diab_y_train = diab.target[:-20]
diab_y_test = diab.target[-20:]


# 5 모델 객체 생성 및 fitting
lr = LinearRegression()
lr.fit(diab_X_train, diab_y_train)


# 6 prediction
diab_pred = lr.predict(diab_X_test)


# 7 훈련 결과 확인
print("훈련 세트 점수 : {:.3f}".format(lr.score(diab_X_train,diab_y_train)))
print("테스트 세트 점수 : {:.3f}".format(lr.score(diab_X_test,diab_y_test)))
# 결과 : 훈련 세트 점수 : 0.192  테스트 세트 점수 : 0.160

# 그래프
plt.scatter(diab_X_test, diab_y_test, color='black')
plt.plot(diab_X_test, diab_pred, color="blue", linewidth=3)

plt.show()

단순 선형 회귀를 통한 결과를 그래프로 보면 위와 같다.

 

 

2. 다중 선형 회귀 - boston 데이터 이용

# 0. 라이브러리 추가
from sklearn.datasets import load_boston
boston = load_boston()

# 1. 데이터 분류
X = boston.data
y = boston.target

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3,random_state = 12)

# 2. 모델링
lr = LinearRegression().fit(X_train, y_train)

# 3. 결과 확인
print("훈련 세트 점수 : {:.3f}".format(lr.score(X_train,y_train)))
print("테스트 세트 점수 : {:.3f}".format(lr.score(X_test,y_test)))
# 훈련 세트 점수 : 0.748 테스트 세트 점수 : 0.709

다중 회귀 방식이기 때문에 선형 회귀와 다르게 그래프를 그리지 못해 생략했습니다.

 

 

+ Recent posts