예측선(판단 기준)을 직선으로 표현하는 것이 적절하지 않은 경우가 있음
- 위의 데이터 같은 경우 s자 형태의 곡선이어야 한다.
시그모이드 함수
# 1. 환경 준비
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 2. 데이터 준비
x = np.array([2, 4, 6, 8, 10, 12, 14])
y = np.array([0, 0, 0, 1, 1, 1, 1])
# 3. 모델 구조 결정
model = Sequential()
# 입력이 하나 출력도 하나인 모델 / 활성화 함수는 시그모이드
model.add(Dense(1, input_dim=1, activation='sigmoid'))
# 4. 모델 파라메타 설정
# 교차 엔트로피 오차 함수를 이용하기 위하여 'binary_crossentropy'로 설정합니다.
# 옵티마이저(optimizer)는 (확률적)경사 하강법을 적용하기 위해, optimizer='sgd'
model.compile(optimizer='sgd' ,loss='binary_crossentropy')
# 5. 생성된 모델에 데이터를 전달하여 학습 진행
model.fit(x, y, epochs=5000)
# 그래프로 확인
plt.scatter(x, y)
plt.plot(x, model.predict(x), 'r')
plt.xlabel('study time')
plt.ylabel('pass probability')
plt.grid()
plt.show()
# Test
hour = 7
prediction = model.predict([hour])
print(f'{hour}시간을 공부할 경우, 합격 예상 확율은 {prediction*100}%입니다')
'빅데이터 분석가 양성과정 > Python - 딥러닝' 카테고리의 다른 글
오류역전파 (0) | 2024.07.17 |
---|---|
퍼셉트론(XOR) (0) | 2024.07.17 |
선형회귀 (0) | 2024.07.17 |
딥러닝을 위한 기초 수학 (0) | 2024.07.17 |
개요 (0) | 2024.07.17 |