zoukankan      html  css  js  c++  java
  • 基于tensorflow的逻辑分类

    #!/usr/local/bin/python3
    
    ##ljj [2]
    ##logic classify model
    
     
    import tensorflow as tf
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    
    data_set = pd.read_csv('LogiReg_data.txt',sep=',')
    
    #data_set.describe()
    
    w = tf.Variable(tf.random_normal([2,1]),dtype="float32")
    b = tf.Variable(tf.random_normal([1]),dtype="float32")
    
    y = tf.placeholder(tf.float32)
    x = tf.placeholder(tf.float32,shape=(1,2))
    
    loss_list = []
    
    with tf.Session() as sess:
    #定义逻辑回归模型
            logits = tf.add(tf.matmul(x,w),b)
            y_predict = tf.nn.sigmoid(logits)
            
            loss = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(logits=logits,labels=y))
               
            train = tf.train.AdamOptimizer(0.001).minimize(loss)
            sess.run(tf.global_variables_initializer())
            
            for j in range(1500):
                    #shuffle data_set
                    #index = np.random.permutation(100)
                    #data_set = data_set.reindex(index)
                    
                    for i in range(100):
                            w_,b_,loss_,_ = sess.run([w,b,loss,train],feed_dict={x:data_set[i:i+1][['math','english']],y:data_set[i:i+1][['result']]})
                    if j%100==0:
                            print('epoch={}, w={},b={},loss={}'.format(j,w_,b_,loss_))
                    loss_list.append(loss_)
            print('final result : ')
            print('w={},b={},loss={}'.format(w_,b_,loss_))
          
            train_data = data_set.values
            x1 = train_data[:,0]
            x2 = train_data[:,1]
            y = train_data[:,-1:]  
            
            for x1p, x2p, yp in zip(x1, x2, y):
                    if yp == 0:
                            plt.scatter(x1p, x2p, marker='x', c='r')
                    else:
                            plt.scatter(x1p, x2p, marker='o', c='g')
                    
            # 根据参数得到直线
            x = np.linspace(20, 100, 10)
            y = []
            for i in x:
                y.append((i * -w_[1] - b_) / w_[0])
                
            plt.plot(x, y)
            plt.show()
    

     运行输出:

    ljjdeMBP:logic_classify lingjiajun$ ./logic_regression.py 

    /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/_bootstrap.py:205: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6

      return f(*args, **kwds)

    2018-05-06 21:48:14.420588: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

    epoch=0, w=[[-0.87034857]

     [ 0.13095166]],b=[ 1.48850453],loss=52.04541015625

    epoch=100, w=[[ 0.01144427]

     [ 0.0005749 ]],b=[ 0.58342618],loss=0.21249079704284668

    epoch=200, w=[[ 0.02113499]

     [ 0.01194377]],b=[-0.85776216],loss=0.16103345155715942

    epoch=300, w=[[ 0.03020949]

     [ 0.02251359]],b=[-2.18144464],loss=0.12141948938369751

    epoch=400, w=[[ 0.03859403]

     [ 0.03212684]],b=[-3.3784802],loss=0.092116579413414

    epoch=500, w=[[ 0.04626059]

     [ 0.04076466]],b=[-4.4525094],loss=0.07090871036052704

    epoch=600, w=[[ 0.05323409]

     [ 0.04850558]],b=[-5.41535854],loss=0.05559533089399338

    epoch=700, w=[[ 0.059574  ]

     [ 0.05546409]],b=[-6.28165531],loss=0.04442552104592323

    epoch=800, w=[[ 0.06535295]

     [ 0.06175429]],b=[-7.06552744],loss=0.03614450991153717

    epoch=900, w=[[ 0.07064275]

     [ 0.067476  ]],b=[-7.77926588],loss=0.029891693964600563

    epoch=1000, w=[[ 0.07550841]

     [ 0.07271299]],b=[-8.43318176],loss=0.02508264034986496

    epoch=1100, w=[[ 0.08000626]

     [ 0.07753391]],b=[-9.0357523],loss=0.021319210529327393

    epoch=1200, w=[[ 0.08418395]

     [ 0.0819957 ]],b=[-9.59397316],loss=0.01832636632025242

    epoch=1300, w=[[ 0.08808059]

     [ 0.08614379]],b=[-10.11344337],loss=0.015911955386400223

    epoch=1400, w=[[ 0.09172987]

     [ 0.09001698]],b=[-10.59893036],loss=0.01393833290785551

    final result : 

    w=[[ 0.09512767]

     [ 0.09361333]],b=[-11.05011368],loss=0.012320424430072308

  • 相关阅读:
    bzoj-2748 2748: [HAOI2012]音量调节(dp)
    bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
    bzoj-3444 3444: 最后的晚餐(组合数学)
    codeforces 709E E. Centroids(树形dp)
    codeforces 709D D. Recover the String(构造)
    codeforces 709C C. Letters Cyclic Shift(贪心)
    codeforces 709B B. Checkpoints(水题)
    codeforces 709A A. Juicer(水题)
    Repeat Number
    hdu 1003 Max Sum (动态规划)
  • 原文地址:https://www.cnblogs.com/lingjiajun/p/9000024.html
Copyright © 2011-2022 走看看