[NLP] 머신 러닝 - (6) 로지스틱 회귀 실습

김규리·2022년 7월 11일
0

NLP

목록 보기
28/33
post-thumbnail

1. 케라스로 구현하는 로지스틱 회귀

  • 독립 변수 데이터: x
  • 숫자 10 이상인 경우에는 1, 미만인 경우에는 0을 부여한 레이블 데이터: y
  • 1개의 x로 1개의 y 예측: Dense output_dim = 1, input_din = 1
  • 시그모이드 함수 사용: activation = sigmoid
  • 옵티마이저: 경사 하강법 sgd 사용
  • 손실 함수: 크로스 엔트로피 함수 (binary_crossentropy 기재)
  • 에포크: 200회
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras import optimizers

x = np.array([-50, -40, -30, -20, -10, -5, 0, 5, 10, 20, 30, 40, 50])
y = np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) # 숫자 10부터 1

model = Sequential()
model.add(Dense(1, input_dim=1, activation='sigmoid'))

sgd = optimizers.SGD(lr=0.01)
model.compile(optimizer=sgd, loss='binary_crossentropy', metrics=['binary_accuracy'])

model.fit(x, y, epochs=200)
plt.plot(x, model.predict(x), 'b', x,y, 'k.')


: x값이 5와 10사이의 어떤 값일 때 y값이 0.5가 넘기 시작
: x값이 5일 때는 y값이 0.5보다 작고, x값이 10일 때는 y값이 0.5를 넘을 것

print(model.predict([1, 2, 3, 4, 4.5]))
print(model.predict([11, 21, 31, 41, 500]))

[[0.21071826]
 [0.26909265]
 [0.33673897]
 [0.41180944]
 [0.45120454]]
[[0.86910886]
 [0.99398106]
 [0.99975663]
 [0.9999902 ]
 [1.        ]]
profile
connecting the dots

0개의 댓글