728x90
우리가 배운 Logistic regression의 hypothesis, cost function 그리고 gradient descent algorithm
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import tensorflow as tf import numpy as np #데이터 read를 위한 모듈 xy = np.loadtxt('traindata.txt', unpack=True, dtype='float32') x_data = xy[0:-1] #모든 x 데이터 y_data = xy[-1] #하나의 y 데이터 X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) # x의 개수에 따라 가변적인 W가 생성됨 W = tf.Variable(tf.random_uniform([1, len(x_data)], -1.0, 1.0)) # Our hypothesis( 우리가 찾았던 sigmoid형태 ) h = tf.matmul(W, X) hypothesis = tf.div(1., 1. + tf.exp(-h)) # cost Function cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis)) # 우리가 만든 cost function은 밥그릇 모양이 되므로 # 기존에 존재하는 gradient descent algorithm을 사용한다. a = tf.Variable(0.1) # learning rate, alpha optimizer = tf.train.GradientDescentOptimizer(a) train = optimizer.minimize(cost) # goal is minimize cost # 실행 전에 변수들을 초기화 init = tf.initialize_all_variables() # Launch the graph sess = tf.Session() sess.run(init) # 학습과정 for step in xrange(2001): sess.run(train, feed_dict={X: x_data, Y: y_data}) if step % 20 == 0: print step, sess.run(cost, feed_dict={X: x_data, Y: y_data}), sess.run(W) | cs |
train.txt
#x0 x1 x2 y
1 2 1 0
1 3 2 0
1 3 5 0
1 5 5 1
1 7 5 1
1 2 5 1
여기서 x0는 bias에 사용되므로 무조건 1이 된다.
실행화면
학습이 진행되면서, cost가 줄어드는것을 확일 할 수있다.
우리가 학습한 train.txt의 데이터는 학습시간,출석횟수에 따른 시험 합격여부를 나타낸다.
만약 우리가 학습한 모델을 이용하여 학습한 데이터가 아닌 새로운 데이터의 결과를 예측할 수 있다.
1 2 3 4 5 6 7 8 | print '-----------------------------------------' # 학습한 hypothesis를 이용하여 결과를 찾는다. study hour와 attendance를 가지고 결과를 판단. # hypothesis를 실행시키는데 X의 변수(공부한 시간)를 bias, study hour, attendance print sess.run(hypothesis, feed_dict={X: [[1], [2], [2]]}) > 0.5 #2시간 공부, 2번 출석 print sess.run(hypothesis, feed_dict={X: [[1], [5], [5]]}) > 0.5 #5시간 공부, 5번 출석 print sess.run(hypothesis, feed_dict={X: [[1, 1], [4, 0], [2, 10]]}) > 0.5 # 2명 동시에 가능 # 4시간 공부, 2번 출석 # 0시간 공부, 10번 출석 | cs |
'CS > 머신러닝' 카테고리의 다른 글
[머신러닝] multinomial classification이란? - 1 (0) | 2016.11.26 |
---|---|
[머신러닝] Logistic classification와 cost minimize 함수 (0) | 2016.11.23 |
[머신러닝] 텐서플로 사용하기 - 1 (0) | 2016.11.23 |
[머신러닝] Linear Regression의 minimize cost 알고리즘 (0) | 2016.11.22 |
[머신러닝] Linear Regression 실습 (0) | 2016.11.20 |