0

나는 numPy를 사용하여 Logistic 회귀 모델을 만들고 TensorFlow "Getting Started"예 : tensorFlow 예제와 동일한 학습 속도와 기원을 사용하여 {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}을 사용하여 교육하려고합니다. 그러나 어떤 이유로 올바른 체중과 편견을 배우십시오. 어떤 도움이 필요합니까? 나는 AI에 처음 온 사람이다.Python의 로지스틱 회귀

코드 :

# Compute cost and gradient 
def propagate(w, b, X, Y): 
    m = X.shape[0] 
    A = sigmoid(np.multiply(w,X) + b) 
    arr = (np.multiply(w,X) + b) - Y 
    cost = np.dot(arr, arr) 
    cost = np.squeeze(cost) 
    dw = 1/m * X.dot((A-Y).T) 
    db = 1/m * np.sum(A-Y) 

    return {"db": db, "dw": dw}, cost 

# Gradient Descnet 
def optimize(w, b, X, Y, epochs, learning_rate): 
    costs = [] 

    for i in range(epochs): 
     grads, cost = propagate(w, b, X, Y) 
     dw = grads['dw'] 
     db = grads['db'] 
     w = w - learning_rate * dw 
     b = b - learning_rate * db 
     if i % 100 == 0: 
      costs.append(cost) 

    return {"w":w, "b":b}, {"db": db, "dw": dw}, costs 

출력 :

w, b, X, Y = np.array([0.3]), -0.3, np.array([1, 2, 3, 4]), np.array([0, -1, -2, -3]) 

grads, cost = propagate(w, b, X, Y) 

print ("dw = " + str(grads["dw"])) # dw = 6.6074129907 
print ("db = " + str(grads["db"])) # db = 2.10776208142 
print ("cost = " + str(cost))  # cost = 23.66 

params, grads, costs = optimize(w, b, X, Y, epochs= 100, learning_rate = 0.01) 

print ("w = " + str(params["w"])) # w = [-4.85038348] (supposed to be about -0.9999969) 
print ("b = " + str(params["b"])) # b = -1.86763966366 (supposed to be about 0.99999082) 
+1

tensorflow – DJK

+1

태그를 지정해야합니다. tensorflow 예제는 선형 회귀 (logistic)가 아닌 선형 회귀를 사용합니다. 물류 기능의 출력 (sigmoid)은 항상 0과 1 사이의 범위에 있으므로 출력 y에 맞지 않습니다. [0, -1, -2, -3] –

+0

감사합니다. 나는 때때로 회귀 분석을 로지스틱 회귀와 혼동하고 나는 S 자형을 사용하고 있다는 것을 잊었다. 그럼 당신의 제안은 다른 활성화 기능을 사용합니까? 아이디어? – styl3r

답변

0

당신은 당신의 마지막 레이어의 활성화로 선형 기능을 사용할 수 있습니다. 그리고 데이터를 정상화하여 더 나은 결과를 얻는 것이 좋습니다.