chapter4 3차함수 회귀 예제 4.6
Closed this issue · 2 comments
Lay4U commented
# 4.6 텐서플로우를 이용해서 3차 함수 회귀선 구하기
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import random
X = [0.3, -0.78, 1.26, 0.03, 1.11, 0.24, -0.24, -0.47, -0.77, -0.37, -0.85, -0.41, -0.27, 0.02, -0.76, 2.66]
Y = [12.27, 14.44, 11.87, 18.75, 17.52, 16.37, 19.78, 19.51, 12.65, 14.74, 10.72, 21.94, 12.83, 15.51, 17.14, 14.42]
# a, b, c, d를 랜덤한 값으로 초기화합니다.
a = tf.Variable(random.random())
b = tf.Variable(random.random())
c = tf.Variable(random.random())
d = tf.Variable(random.random())
# 잔차의 제곱의 평균을 반환하는 함수입니다.
def compute_loss():
y_pred = a * X*X*X + b * X*X + c * X + d
loss = tf.reduce_mean((Y - y_pred) ** 2)
return loss
optimizer = tf.keras.optimizers.Adam(lr=0.07)
for i in range(1000):
# 잔차의 제곱의 평균을 최소화(minimize)합니다.
optimizer.minimize(compute_loss, var_list=[a,b,c])
if i % 100 == 99:
print(i, 'a:', a.numpy(), 'b:', b.numpy(), 'c:', c.numpy(), 'd:', d.numpy(), 'loss:', compute_loss().numpy())
line_x = np.arange(min(X), max(X), 0.01)
line_y = a * line_x * line_x * line_x + b * line_x * line_x + c * line_x + d
# 그래프를 그립니다.
plt.plot(line_x,line_y,'r-')
plt.plot(X,Y,'bo')
plt.xlabel('Population Growth Rate (%)')
plt.ylabel('Elderly Population Rate (%)')
plt.show()
이 코드에서
y_pred = a * X*X*X + b * X*X + c * X + d
optimizer.minimize(compute_loss, var_list=[a,b,c,d])
가 맞는거 같습니다.
greentec commented
- colab 코드 수정
- github 코드 수정