선형회귀분석_평가지표 [Linear_reg]

kangjuju·2023년 5월 11일
0

회귀분석

목록 보기
5/11

선형회귀의 평가지표

  • 실제 데이터 표본과 예측데이터의 차이를 표현해 성능을 검토하기 위한 지표들이다.

  • 풀어서 말하자면 Training 데이터로 학습한 회귀모델에 Test 또는 다른 새로운 데이터를 input했을 때, 모델이 예측한 값과 실제 표본 값을 바탕으로 다양한 방법으로 오차를 구해 성능을 평가하는 방법들이다.


예제

# 공부시간에 따른 시험점수 자료 사용
df = pd.DataFrame({'studytime':[3,4,5,8,10,5,8,6,3,6,10,9,7,0,1,2],
                   'score':[76,74,74,89,92,75,84,82,73,81,89,88,83,40,70,68]})

1. train_test_split

from sklearn.model_selection import train_test_split
train, test = train_test_split(df,test_size=0.4,random_state=12) #train 6 / test 4
print(df.shape)
print(train.shape,test.shape) #(16, 2) => (9, 2) (7, 2)

x_train = train[['studytime']]
y_train = train[['score']]
x_test = test[['studytime']]
y_test = test[['score']]

2. 모델 생성 LinearReg

model = LinearRegression().fit(x_train,y_train)
y_pred = model.predict(x_test) # 모델 검정은 test 사용
print('실제값 : ',y_test.values)
print('예측값 : ',y_pred)

3. 모델 성능 수치로 표현

  • r2_score(y_test, y_pred) : 결정계수
  • explained_variance_score(y_true, y_pred) : 설명분산점수
  • mean_squared_error : RMSE - 평균제곱근오차

결정계수와 설명분산점수가 다르다면 에러에 편향이 있다는 것.
이는 모델학습이 잘못되었다는 뜻이다.

from sklearn.linear_model import LinearRegression #summary() 지원 X
from sklearn.metrics import r2_score, explained_variance_score, mean_squared_error
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler

참고

데이터 정규화 MinMaxScaler()

  • 모든자료를 0~1사이 값으로 변환한다.
  • 차원이 증가하므로 flatten을 사용했다.
  • 주로 독립변수를 정규화 한다.
scaler = MinMaxScaler()
x_scaled = scaler.fit_transform(x.reshape(-1,1))
print(x_scaled[:5])
print('r : ',np.corrcoef(x,y))
print('r : ',np.corrcoef(x_scaled.flatten(),y)) #결과는 같음

정규화된 x_scaled로 분석해도 결과가 같다.

오버피팅 방지 목적의 제약조건을 담은 회귀모형

0개의 댓글