[ 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]
[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]
'Deep Learning > 혼공 머신 러닝 - 딥러닝' 카테고리의 다른 글
[DL] DL에서 사용 하는 활성화 함수의 역할 (0) | 2022.01.02 |
---|---|
[DL] 주성분 분석 (0) | 2021.12.21 |
[DL] 비지도 학습, K-평균 (0) | 2021.12.19 |
[DL] 비지도 학습, 군집 알고리즘 (0) | 2021.12.19 |
[DL] 확률적 경사 하강법 (Gradient Descent) (0) | 2021.12.16 |