'공부 시간이 x시간이면 합격 확률은 몇 %일까?' — 직선 대신 S자 곡선으로 확률을 예측하고, 50%를 기준으로 분류해요.
🖱️ 화면 위쪽을 클릭하면 합격(파랑), 아래쪽을 클릭하면 불합격(빨강) 학생이 추가돼요. 점을 다시 클릭하면 삭제.
곡선의 식은 p = σ(w·x + b) 이고, 보라색 결정 경계(p=50%)를 기준으로 오른쪽/왼쪽을 합격/불합격으로 분류해요.
import torch
import torch.nn as nn
x = torch.tensor([[1.0], [2.5], [4.0], [5.5], [7.0], [9.0]])
y = torch.tensor([[0.0], [0.0], [0.0], [1.0], [1.0], [1.0]])
model = nn.Sequential(
nn.Linear(1, 1), # w·x + b
nn.Sigmoid(), # 0~1 확률로 변환
)
loss_fn = nn.BCELoss() # 교차 엔트로피 (이진 분류용)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
for epoch in range(500):
p = model(x) # 합격 확률 예측
loss = loss_fn(p, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(model(torch.tensor([[6.0]]))) # 6시간 공부 → 합격 확률?