본문 바로가기
python 및 머신러닝/파이썬 라이브러리를 활용한 머신러닝

scikit-learn vs tensorflow

by java개발자 2017. 9. 25.

scikit-learn에 비해 tensorflow는 변수설정이 비교적 복잡하다.

scikit-learn에는 없는 [수식]이 tensorflow에 들어가기 때문에....


close test라는 전제.


 scikit-learn

 tensorflow

 y = w1x + w2x^2 + w3x^3 + w4x^4 + w5x^5

 iris_dataset = load_iris()

 X = iris_dataset.data

 y = iris_dataset.target


 model = LogisticRegression(C=100, penalty="l1")

 model.fit(X, y)

 print('predict: {}'.format(model.predict(X)))

 print('train score: {}'.format(model.score(X, y)))




























 [수식]

 x = tf.placeholder(tf.float32, [None, 5])

 w = tf.Variable(tf.zeros([5, 1]))

 y = tf.matmul(x, w)

 t = tf.placeholder(tf.float32, [None, 1])

 loss = tf.reduce_sum(tf.square(y-t))

 train_step = tf.train.AdamOptimizer().minimize(loss)


 sess = tf.Session()

 sess.run(tf.global_variables_initializer())

 # 트레이닝 세트 데이터를 준비한다.

 train_x = np.zeros([12, 5])

 for row, month in enumerate(range(1, 13)):

    for col, n in enumerate(range(0, 5)):

        train_x[row][col] = month**n


 train_t = np.array([5.2, 5.7, 8.6, 14.9, 18.2, 20.4, 25.5, 26.4, 22.8, 17.5, 11.1, 6.6])

 train_t = train_t.reshape([12,1])

        

 i = 0

 for _ in range(10000):

    i += 1

    sess.run(train_step, feed_dict={x:train_x, t:train_t})

    if i % 1000 == 0:

        loss_val = sess.run(loss, feed_dict={x:train_x, t:train_t})

        print ('Step: %d, Loss: %f' % (i, loss_val))


 w_val = sess.run(w)

 print(w_val)


 def predict(x):

    result = 0.0

    for n in range(0, 5):

        result += w_val[n][0] * x**n

    return result


 test_x = np.linspace(1,12,12) # 12개

 pred_y = predict(linex)


출처: [텐서플로로 시작하는 딥러닝]