Logistic (Regression) Classification 실습
- 실행 코드
import tensorflow as tf import numpy as np import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]] y_data = [[0], [0], [0], [1], [1], [1]] # none이라는 것은 몇개의 데이터가 들어올지 모른다를 의미한다. # 뒤의 수는 각 데이터에 몇개의 값이 들어오는지를 의미한다. X = tf.placeholder(tf.float32, shape=[None, 2]) Y = tf.placeholder(tf.float32, shape=[None, 1]) #[2,1] : 두개의 수가 들어오고 하나의 수가 나간다. #[1] : 한개의 수가 나간다. W = tf.Variable(tf.random_normal([2, 1]), name='weight') b = tf.Variable(tf.random_normal([1]), name='bias') # Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W))) # sigmoid란 sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W)))과 같은 수식이다. # 사용자 편의를 위해 구현해놓은 라이브러리로 이해 hypothesis = tf.sigmoid(tf.matmul(X, W) + b) # cost/loss function (Logistic) cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis)) train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost) # Accuracy computation # True if hypothesis>0.5 else False predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32) accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32)) # Launch graph with tf.Session() as sess: # Initialize TensorFlow variables sess.run(tf.global_variables_initializer()) for step in range(10001): cost_val, _ = sess.run([cost, train], feed_dict={X: x_data, Y: y_data}) if step % 5000 == 0: print(step, cost_val) # Accuracy report h, c, a = sess.run([hypothesis, predicted, accuracy], feed_dict={X: x_data, Y: y_data}) print("\nHypothesis:\n", h, "\nCorrect (Y):\n", c, "\nAccuracy:\n", a)
- 실행 결과
'IT > 머신러닝' 카테고리의 다른 글
[section_7] ML의 실용과 몇가지 팁 (0) | 2018.06.01 |
---|---|
[section_6] Softmax Regression (Multinomial Logistic Regression) (0) | 2018.06.01 |
[section_5] Logistic (Regression) Classification (0) | 2018.06.01 |
[section_4_lab2] 텐서플로우 파일에서 데이터 읽어오기 (0) | 2018.06.01 |
[section_4_lab1] Multivariable linear regression using Matrix (0) | 2018.06.01 |