without haste but without rest

11. Logistic regression - deep learning 본문

Homework/DataMining

11. Logistic regression - deep learning

JinungKim 2020. 6. 2. 11:33

 

 

0. 개요

코드 보다는 로지스틱 회귀모형에 대한 이론적 학습을 마치고 코드 살펴봐야할 듯..

로지스틱 회귀분석에 대한 딥러닝 코드


 

## 이항 로지스틱 선형회귀모형: SGD

import numpy as np
from sklearn.datasets import load_iris


# load iris dataset
iris = load_iris()

# 독립변수
X = iris.data

# 종속변수: setosa: 0, (vergicolor, veriginica): 1
y = (iris.target != 0) * 1

# 계획행렬 구성
intercept = np.ones((X.shape[0], 1))
X = np.concatenate((intercept, X), axis = 1)


# 초깃값
beta = np.zeros(X.shape[1])

# 로지스틱 함수
def sigmoid(z):
    
    return 1 / (1 + np.exp(-z))
    
# 예측확률
def predict_prob(X, beta):

    return sigmoid(np.dot(X, beta))

# 음 로그 가능도 함수
def negative_log_likelihood(p, y):
    
    return - (y * np.log(p) + (1 - y) * np.log(1 - p)).mean()

# 스코어, gradient
def gradient(p, y):

    return - np.dot(X.T, (p - y)) / y.size


# classification by threshold
def predict(X, beta, threshold):
    
    return predict_prob(X, beta) >= threshold


# 최대경사도법
num_iter = 1000 # 최대반복수
eta = 0.1 # 갱신률(학습률)

for i in range(num_iter):
    
    z = np.dot(X, beta)
    p = sigmoid(z)
    # p = predict_prob(X, beta)

    # 갱신
    beta += eta * gradient(p, y)

    z = np.dot(X, beta)
    p = sigmoid(z)
    
    if (i + 1) % 100 == 0:
        print('At iteration %d: loss = %.4f' % ((i + 1), negative_log_likelihood(p, y)))
    
    
preds = predict(X, beta, 0.5)
print(preds)

# accuracy
print((preds == y).mean())

'Homework > DataMining' 카테고리의 다른 글

13. Cross validation & Pipeline  (0) 2020.06.21
12. Decision Tree  (0) 2020.06.09
10. OLS, SGD  (0) 2020.05.26
09. Clustering - dbscan, spectal  (0) 2020.05.19
08. Clustering - K-means, Hierarchical  (0) 2020.05.12
Comments