without haste but without rest
11. Logistic regression - deep learning 본문
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