[텐서플로우] 다중 선형 회귀를 이용한 당뇨병 분류기 파이썬 코드

2020. 4. 18. 10:51노트/Python : 프로그래밍

데이터 

 

data-03-diabetes.csv
0.05MB

코드 

xy= np.loadtxt(path+"data-03-diabetes.csv", delimiter=",")
xy

>>>

array([[-0.294118 ,  0.487437 ,  0.180328 , ..., -0.53117  , -0.0333333,
         0.       ],
       [-0.882353 , -0.145729 ,  0.0819672, ..., -0.766866 , -0.666667 ,
         1.       ],
       [-0.0588235,  0.839196 ,  0.0491803, ..., -0.492741 , -0.633333 ,
         0.       ],
       ...,
       [-0.411765 ,  0.21608  ,  0.180328 , ..., -0.857387 , -0.7      ,
         1.       ],
       [-0.882353 ,  0.266332 , -0.0163934, ..., -0.768574 , -0.133333 ,
         0.       ],
       [-0.882353 , -0.0653266,  0.147541 , ..., -0.797609 , -0.933333 ,
         1.       ]])
         
 xdata = xy[:,0:-1]
ydata = xy[:,[-1]]

print(xdata.shape, ydata.shape)

>>>
(759, 8) (759, 1)

w = tf.Variable(tf.random_normal([8,1])) # 1: 출력되는 y의 갯수 
b = tf.Variable(tf.random_normal([1])) # 1: 출력되는 y의 갯수 
x = tf.placeholder(tf.float32, shape = [None,8])
y = tf.placeholder(tf.float32, shape = [None,1])

hf = tf.sigmoid(tf.matmul(x,w)+b ) # 예측 값
cost = - tf.reduce_mean(y * tf.log(hf)+ (1-y)*tf.log(1-hf))
train = tf.train.GradientDescentOptimizer(0.1).minimize(cost)

predicted = tf.cast(hf>0.5, dtype=tf.float32)
accuracy= tf.reduce_mean(tf.cast(tf.equal(predicted , y) , dtype=tf.float32))

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for step in range(10001):
        cv ,_ = sess.run([cost, train],feed_dict={x:xdata,y:ydata})
        if step %200==0:
            print(step,cv)
    hv,pv,av=sess.run([hf,predicted,accuracy],feed_dict={x:xdata, y:ydata})
    print("hv:",hv,"\npv:",pv,"\nav:",av)
    
>>>    
 0 0.6588901
200 0.6212276
400 0.60513455
600 0.5942359
800 0.5850964
......

hv: [[0.4260255 ]
 [0.92599666]
 [0.1564888 ]
 [0.9510748 ]
....

pv: [[0.]
 [1.]
 [0.]
 [1.]
 [0.]
....

av: 0.770751

 

모델비교

2020/04/20 - [노트/Python : 프로그래밍] - [텐서플로우] 소프트맥스 회귀 (분류) (Softmax Regression) 파이썬 코드

2020/04/17 - [노트/Python : 프로그래밍] - [텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드

2020/04/16 - [노트/Python : 프로그래밍] - [텐서플로우] 로지스틱 회귀(Logistic Regression) 분류 파이썬 코드

2020/04/14 - [노트/Python : 프로그래밍] - [텐서플로우] 선형회귀분석(Linear Regression) 기본 구조 파이썬 코드