본문 바로가기
IT/머신러닝

[section_5_lab] Logistic (Regression) Classification 실습

by 빨강자몽 2018. 6. 1.

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)

  • 실행 결과