‣ 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()
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 확인 가능하다.
이제 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)
print(type(X), type(y))
# <class 'numpy.ndarray'> <class 'numpy.ndarray'>
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
R-squared : 선형 회귀 모델에 대한 적합도 측정값
( 선형회귀모델을 Fitting 한 후, 모델이 데이터에 얼마나 적합한지 확인하기 위해 측정 )
0과 1 사이의 값을 가지며, 1에 가까울수록 선형회귀 모델이 데이터에 대하여 높은 연관성을 가지고 있다고 해석한다.
공식 :