Tensorflow 다중선형회귀 공부
Tensorflow/ML
다중 선형회귀 복습¶
지난번포스팅했던 다중 선형회귀를 복습하는 시간을 가지겠습니다.
자세한 포스팅은 이전에 했기때문에 주석을 최소화 하였습니다.
import tensorflow as tf
import numpy as np
print(tf.__version__)
변수 만들기(컴프리헨션 복습)¶
test1 = [i for i in range(0,10) if i>2]
test1
test1 = list(range(0,10))
test2 = list(range(10,20))
print(test1)
print(test2)
test3 = []
for i,v in zip(test1,test2):
test3.append([i,v])
test3
x,y, 값 나눠주기¶
x1 = [x[0] for x in test3]
x2 = [x[1] for x in test3]
y = [i for i in range(100,110)]
print(x1)
print(x2)
print(y)
#x변수가 2개이기 때문에 W도 2개 설정
tf.random.set_seed(0)
W1 = tf.Variable(tf.random.uniform((1,),1., 10.0 ))
W2 = tf.Variable(tf.random.uniform((1,),1., 10.0 ))
b = tf.Variable(tf.random.uniform((1,),1., 10.0 ))
learning_rate = tf.Variable(0.001)
for i in range(1001):
with tf.GradientTape() as tape:
hypothesis = W1 * x1 + W2* x2 + b
cost = tf.reduce_mean(tf.square(hypothesis - y))
W1_grad, W2_grad, b_grad = tape.gradient(cost, [W1,W2,b])
W1.assign_sub(learning_rate * W1_grad)
W2.assign_sub(learning_rate * W2_grad)
b.assign_sub(learning_rate * b_grad)
if i % 50 ==0:
print("{:5} | {:10.6f} | {:10.4f} | {:10.4f} | {:10.6f}".format(
i, cost.numpy(), W1.numpy()[0], W2.numpy()[0], b.numpy()[0]))
x1 = [x for x in range(0,10)]
x2 = [x for x in range(10,20)]
x3 = [x for x in range(30,40)]
y = [x for x in range(100,110)]
print(x1)
print(x2)
print(x3)
print(y)
#변수를 한 메트릭스로 만들기
data =np.array([[i,v,z,h] for i,v,z,h in zip(x1,x2,x3,y)],dtype =np.float32)
data
#X, Y 로 데이터 나눠주기
X = data[:,:-1]
Y = data[:,[-1]]
print(X)
print(Y)
print(X.shape)
print(X.shape[1])
#W, b 설정해주기
W = tf.Variable(tf.random.normal((X.shape[1],1)))
b = tf.Variable(tf.random.normal((1,)))
# 예측 모델 및 경사하강법 적용
def predict(X):
return tf.matmul(X,W) + b
learning_rate = 0.00001
for i in range(1001):
with tf.GradientTape() as tape:
cost =tf.reduce_mean((tf.square(predict(X) - y)))
W_grad, b_grad = tape.gradient(cost, [W,b])
W.assign_sub(learning_rate * W_grad)
b.assign_sub(learning_rate * b_grad)
if i % 500 ==0:
print("{:5} | {:10.6f} | {:10.4f} | {:10.4f} | {:10.6f}".format(
i, cost.numpy(), W.numpy()[0][0], W.numpy()[1][0], b.numpy()[0]))
#W값 확인
print(W)
#X값으로 해 도출
predict(X)
#임의의 값으로 해 도출
predict([[ 1., 1., 4.],[ 145., 50., 50.]]).numpy()
'Tensorflow > ML' 카테고리의 다른 글
Python Logistic Regression (0) | 2020.07.28 |
---|---|
Python Tensorflow 다중선형회귀 (0) | 2020.07.25 |
Python Tensorflow 단순선형회귀 (0) | 2020.07.20 |