Deep Learning/혼공 머신 러닝 - 딥러닝

[DL] Keras, sklearn 이용 선형 회귀

KimTory 2021. 12. 13. 23:42

[ linear regression - 선형 회귀 알고리즘 ]

 

▶ 여러 회귀 알고리즘 중, 가장 대표적인 회귀 알고리즘이며, 비교적 간단하고 성능이 뛰어나기 때문입니다.

 

[Keras 소스 코드]

 

from tensorflow.keras.models import Sequential # keras의 Sequential()을 임포트
from tensorflow.keras.layers import Dense # keras의 Dense()를 임포트
from tensorflow.keras import optimizers # keras의 옵티마이저를 임포트
import numpy as np # numpy

train_time=np.array([1,2,3,4,5,6,7,8,9]) # 공부하는 시간
train_target=np.array([11,22,33,44,53,66,77,87,95]) # 각 공부하는 시간에 맵핑되는 성적

# model이라는 모델 객체 생성 // Sequential()
model=Sequential()
# 출력 차원, 입력 차원, 선형 회귀 알고리즘 사용 할 시, linear 매개변수 입력
model.add(Dense(1, input_dim=1, activation="linear"))
# optimizer는 경사 하강법의 sgd 즉, 확률적 경사 하강법 사용
sgd=optimizers.SGD(lr=0.01) # 학습률 (learning late, 0.01)

# 손실 함수(loss function)은 평균 제곱오차 mse를 사용
model.compile(optimizer=sgd, loss="mse", metrics=["mse"])

# batch size = 1로 설정, x,y 데이터 최소화 위해 Epoch(sample 반복 횟수) 300
# 출력이 너무 많아서 임시로 10 정도 사용
# 출력 하다 보면 일정 구간에서 loss가 감소 되지 않는데, 이는 가중치(W) bias(b)의
# 최적값을 찾았기 때문임
model.fit(train_time,train_target,batch_size=1, epochs=10, shuffle=False) 

// 예측
print(model.predict([4.5]))
print(model.predict([9.5]))
# predict -> 예측값으로 4.5, 9.5 입력 했을 시,
# 예측되는 점수 결과 출력

 

[Epoch - loss - mse]

 

Colab

[sklearn 소스 코드]

 

from sklearn.model_selection import train_test_split

# 훈련 세트와 테스트 세트로 나눕니다
train_input, test_input, train_target, test_target = train_test_split(
    train_time, train_target, random_state=42)
# 훈련 세트와 테스트 세트를 2차원 배열로 바꿉니다
train_input = train_input.reshape(-1, 1)
test_input = test_input.reshape(-1, 1)

from sklearn.linear_model import LinearRegression

lr = LinearRegression()

lr.fit(train_input, train_target)
print(lr.predict([[4.5]]))

 

[Predict]