[텐서플로우] 선형회귀분석(Linear Regression) 기본 구조 파이썬 코드

2020. 4. 14. 11:13노트/Python : 프로그래밍

 

★설치 환경 

pip install tensorflow==1.15.0

 

tensorboard                        2.0.2
tensorflow                         1.15.0
tensorflow-estimator               2.0.1

 

 

버젼 

tensorboard                        1.15.0
tensorflow                         1.15.0
tensorflow-estimator               1.15.1

Python 3.7.4

 

 

텐서플러우로 예측분석

데이터 

 

cars.csv
0.01MB

 

코드

# 데이터 읽기 
path = "C:\\Users\\student\\Desktop\\DY\\★ 데이터\\306. carsdata"
cars=pd.read_csv(path + "\\cars.csv")

# 사용할 데이터 칼럼 및 xtrain , ytrain
data=cars[[' cylinders',' hp']]
xtrain = list(data[' cylinders'])
ytrain = list(data[' hp'])

# w, b random 변수 설정 
import tensorflow as tf

w = tf.Variable(tf.random_normal([1]))
b = tf.Variable(tf.random_normal([1]))

# 가설함수 설정 
hf = xtrain*w + b

sess = tf.Session()
sess.run(tf.global_variables_initializer())

cost = tf.reduce_mean(tf.square(hf - ytrain)) # (예상값 - 실제값 ) 합의 제곱에 대한 평균 

opt = tf.train.GradientDescentOptimizer(0.0001) # alpha 값 
train = opt.minimize(cost) # 경사 하강 알고리즘 

# cost , w, b 출력 
sess.run(train)
print(sess.run(cost), sess.run(w), sess.run(b))



# 임의의 실린더 값 입력했을 때 예측값 출력 
for x in [10,12,16]:
    yhat = sess.run(w)[0] * x + sess.run(b)[0]
    print("실린더가 {}일때 예상되는 hp값은 {}".format(x,yhat))
    
 >>>
 12264.211 [0.49276823] [0.22389925]
실린더가 10일때 예상되는 hp값은 5.151581525802612
실린더가 12일때 예상되는 hp값은 6.137117981910706
실린더가 16일때 예상되는 hp값은 8.108190894126892

 

코스트함수 시각화

# cost함수 그래프 시각화 
xtrain = list(data[' cylinders'])
ytrain = list(data[' hp'])

W = tf.placeholder(tf.float32)

# 선형모델의 가설
hypothesis = xtrain * W

# 비용함수 
cost = tf.reduce_mean(tf.square(hypothesis - ytrain))

# session 설정 
sess = tf.Session()

# 비용함수 점찍기위한 함수 
W_history = []
cost_history = []

for i in range(-30, 70):
    curr_W = i
    curr_cost = sess.run(cost, feed_dict={W: curr_W})
    W_history.append(curr_W)
    cost_history.append(curr_cost)

# Show the cost function
plt.plot(W_history, cost_history)
plt.show()

 

 

모델비교 

2020/04/20 - [노트/Python : 프로그래밍] - [텐서플로우] 소프트맥스 회귀 (Softmax Regression) 분류 파이썬 코드

2020/04/18 - [노트/Python : 프로그래밍] - [텐서플로우] 다중 선형 회귀를 이용한 당뇨병 분류기 파이썬 코드

2020/04/17 - [노트/Python : 프로그래밍] - [텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드

2020/04/16 - [노트/Python : 프로그래밍] - [텐서플로우] 로지스틱 회귀(Logistic Regression) 분류 파이썬 코드