-
AI Logistic regression 예제인공지능 2020. 5. 26. 19:16728x90
개념 설명 글은 이 전 글을 참고해주세요!
2020/05/24 - [AI] - AI Logistic regression : 분류(Classification)
아래와 같은 학습 시간이 있을 때 합격 여부를 예측해주는 함수입니다.
학습시간 복습시간 합격여부 2 4 0 4 11 0 6 6 0 8 5 0 10 7 1 12 16 1 14 8 1 16 3 0 18 7 0 import numpy as np # 학습 데이터 준비 x_data = np.array([[2, 4], [4, 11], [6, 6], [8, 5], [10, 7], [12, 16], [14, 8], [16, 3], [18, 7]]).reshape([-1, 2]) y_data = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1]).reshape([-1, 1]) # 임의의 W, b 준비 W = np.random.rand(2, 1) b = np.random.rand(1) # 시그모이드 함수 # 입력 x에 대해서 결과가 1이 나올 확률을 의미 def sigmoid(x): return 1 / (1 + np.exp(-x)) # 손실함수 # 크로스 엔트로피 def loss_func(x, t): delta = 1e-7 z = np.dot(x, W) + b # 각각의 입력에 대해 결과가 1이 나올 확률을 구해줌 y = sigmoid(z) # 정답이 1일 때는 1이 나올 확률인 시그모이드를 그대로 활용 # 정답이 0 일 때는 1이 나올 확률을 역전시켜 0이 나올 확률로 만든 뒤 활용함 return -np.sum(t * np.log(y + delta) + (1 - t) * np.log(1 - y + delta)) def numerical_derivation(f, input_data): delta_x = 1e-4 it = np.nditer(input_data, flags=['multi_index']) ret = np.zeros_like(input_data) while not it.finished: idx = it.multi_index tmp = input_data[idx] input_data[idx] = float(tmp) + delta_x fx1 = f(input_data) input_data[idx] = float(tmp) - delta_x fx2 = f(input_data) ret[idx] = (fx1 - fx2) / (2 * delta_x) input_data[idx] = tmp it.iternext() return ret def predict(x): y = sigmoid(np.dot(x, W) + b) if y < 0.5: return 0 return 1 error_val = loss_func f = lambda x: loss_func(x_data, y_data) learning_rate = 1e-2 print('Init error_val = ', error_val(x_data, y_data), 'W = ', W, 'b = ', b) for step in range(80001): W -= learning_rate * numerical_derivation(f, W) b -= learning_rate * numerical_derivation(f, b) if step % 400 == 0: print('step = ', step, 'error_val = ', error_val(x_data, y_data), 'W = ', W, 'b = ', b) print(predict([3, 17])) print(predict([5, 8])) print(predict([7, 21])) print(predict([12, 0]))
결과
'인공지능' 카테고리의 다른 글
딥러닝 기초 (XOR 문제 해결) (0) 2020.06.01 AI Multi layer (XOR 문제) (0) 2020.05.29 AI Logistic regression : 분류(Classification) (0) 2020.05.24 AI Linear regression 예제 (0) 2020.05.24 AI Linear regression 파이썬 구현 (0) 2020.05.24