본문 바로가기
AI & 머신러닝 coding skill

머신러닝 - 회귀 알고리즘 평가 지표- R_squared

by 호빵님 2022. 5. 23.
반응형

회귀 알고리즘 평가 지표- R_squared

이번 실습에서는 R^2 에 대해 알아보겠습니다.

R^2 또한 사이킷런 모듈 안에 존재하여 쉽게 불러오기 만으로도 회귀 모델 평가 지표를 계산할 수 있습니다.

특히 이전 실습들에서 살펴본 RSS, MSE, MAE 지표들은 “오차” 에 기반한 지표들이기 때문에 해당 값들이 작을수록 더 높은 성능의 모델을 의미하지만, R^2 지표의 경우 데이터에 대한 모델의 설명력을 의미하기 때문에 1에 가까울수록 즉, 더 클수록 높은 성능의 모델임을 의미합니다.


R^2 평가 지표를 계산하기 위한 사이킷런 함수/라이브러리

  • from sklearn.metrics import r2_score : R^2 평가 지표 계산 기능 불러오기
  • r2_score(y_true, y_pred) : R^2 값 계산하기

 

 

from elice_utils import EliceUtils
elice_utils = EliceUtils()

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

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

from sklearn.metrics import r2_score

# 데이터 X와 y를 생성하고, 학습용 데이터와 테스트용 데이터로 분리하여 반환하는 함수입니다.
def load_data():
    
    np.random.seed(0)
    
    X = 5*np.random.rand(100,1)
    y = 3*X + 5*np.random.rand(100,1)
    
    train_X, test_X, train_y, test_y = train_test_split(X,y,test_size=0.3, random_state=0)
    
    return train_X, train_y, test_X, test_y

# 회귀 모델을 불러오고, 불러온 모델을 학습용 데이터에 맞춰 학습시켜 반환하는 함수입니다.
def Linear_Regression(train_X, train_y):
    
    lr = LinearRegression()
    
    lr.fit(train_X,train_y)
    
    return lr
    
# 그래프로 시각화합니다.
def plotting_graph(test_X, test_y, predicted):
    plt.scatter(test_X,test_y)
    plt.plot(test_X, predicted, color='r')
    
    plt.savefig("result.png")
    elice_utils.send_image("result.png")

"""
1. 정의한 함수들을 이용하여 main() 함수를 완성합니다.
   
   Step01. 생성한 데이터를 
           학습용 데이터와 테스트 데이터로 
           분리하여 반환하는 함수를 호출합니다.
           
   Step02. 학습용 데이터를 바탕으로 학습한 선형 회귀
           모델을 반환하는 함수를 호출합니다.
          
   Step03. 학습된 모델을 바탕으로 계산된
           테스트 데이터의 예측값을 predicted에
           저장합니다.
           
   Step04. 회귀 알고리즘을 평가하기 위한 r2_score값을 
           R_squared에 저장합니다.
"""
def main():
    
    train_X, train_y, test_X, test_y = load_data()
    
    lr = Linear_Regression(train_X, train_y)
    
    predicted = lr.predict(test_X)
    
    R_squared  = r2_score(test_y, predicted)
    
    print("> R_squared :",R_squared)
    
    plotting_graph(test_X, test_y, predicted)
    
    return R_squared

if __name__=="__main__":
    main()

 

 

*본 포스팅은 DX기업교육 플랫폼인 Elice academy의 머신러닝 심화 과정에서 실습한 코드를 이용해서 작성되었습니다.

https://elice.io/

 
 
 

올인원 디지털 교육 플랫폼 - 엘리스

우리 모두를 위한 교실, 엘리스와 함께 더 나은 기회를 만들어보세요

elice.io

 

 

반응형