Linear Regression

김지윤·2023년 6월 29일
0

Scikit-learn

목록 보기
2/11

‣ data : diabetes
sklearn을 이용하여 databetes 데이터셋을 분석해보자.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.datasets import load_diabetes   # built-in data
diabetes = load_diabetes()

  • diatbetes의 columns
columns = diabetes.feature_names
print(columns)
# ['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']

이 외에도, 아래와 같은 코드들로 diabetes data를 탐색할 수 있다.

print(diabetes)
print(diabetes['data']) : 예측할 때 사용될 diabetes의 feature 들이다.
print(diabetes['target']) : target 값은 예측해야하는 값이다.
print(diabetes['DESCR'])
이 코드들을 이용하여, diabetes data 확인 가능하다.


sklearn.LinearRegression

이제 X 와 y 에 diabetes의 feature와 target을 각각 담아 sklearn.LinearRegression 으로 target 값을 예측해보자.

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
X, y = load_diabetes(return_X_y=True)
  • X와 y의 type : ndarray
print(type(X), type(y))
# <class 'numpy.ndarray'> <class 'numpy.ndarray'>
  • X와 y의 shape : (442, 10), (442, )
print(X.shape, y.shape)
# (442, 10) (442,)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state =10)

model = LinearRegression()
model.fit(X_train, y_train)

print(model.coef_)  #기울기
# [   6.7924784  -224.39685223  505.73935978  319.35318609 -776.39893593
#   396.87458108  132.80380166  308.91529418  689.37659909   53.89074748]

print(model.intercept_)  #절편
# 151.79831831053397

pred = model.predict(X_test)
r2_score = r2_score(y_test, pred)
print(r2_score)   # 0.5341988244945842

r2 score : R-squared

  • R-squared : 선형 회귀 모델에 대한 적합도 측정값
    ( 선형회귀모델을 Fitting 한 후, 모델이 데이터에 얼마나 적합한지 확인하기 위해 측정 )

  • 0과 1 사이의 값을 가지며, 1에 가까울수록 선형회귀 모델이 데이터에 대하여 높은 연관성을 가지고 있다고 해석한다.

  • 공식 : 1SSE/SST1 - SSE/SST

profile
데이터 분석 / 데이터 사이언티스트 / AI 딥러닝

0개의 댓글