Python(Colab) 파이토치(Pytorch) + 논리 회귀 (다항)
2023. 6. 20. 22:18ㆍ파이썬/머신러닝 및 딥러닝
1. 데이터 셋 설정
x_train = [[1,2,1,1],
[2,1,3,2],
[3,1,3,4],
[4,1,5,5],
[5,7,5,5],
[6,2,5,6],
[7,6,6,6],
[8,7,7,7]
]
y_train = [0,0,0,1,1,1,2,2] #결과도 3개
x_train = torch.FloatTensor(x_train)
y_train = torch.LongTensor(y_train)
x_train.shape , y_train.shape
2. 모델 설정
model = nn.Sequential(
nn.Linear(4,3)
)
# 4개 input 3개 output
print(model)
3. 학습하기
y_pred = model(x_train)
y_pred
4. 손실율 확인후 반복 학습
#🔴 다항 논리 회귀에서는 BCELoss() 대신에 CrossEntropyLoss()를 사용
# CrossEntropyLoss()는 소프트맥수 함수가 포함되어있다
# 클래스의 개수만큼 확률을 반환해준다.
loss = nn.CrossEntropyLoss()(y_pred,y_train)
loss
optimizer = optim.SGD(model.parameters(),lr=0.1)
epochs =1000
for epoch in range(epochs+1):
y_pred = model(x_train)
loss = nn.CrossEntropyLoss()(y_pred,y_train)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print(f'Epoch{epoch}/{epochs} // Loss{loss:.6f}')
학습 후 기울기 확인
print(list(model.parameters()))
✔️CrossEntropyLoss(): Softmax()함수가 포함되어 있으며, 다항 논리 회귀에서 사용
5. 테스트 데이터 입력 후 확인
x_test= torch.FloatTensor([[1,2,5,6]])
y_pred = model(x_test)
y_pred
6. 수치를 Softmax()로 0~1사이로 최적화
y_prob = nn.Softmax(1)(y_pred)
y_prob
8. 결과치 확인
리스트가 두 번 쌓여있다 확인!
print(f'0일 확률 : {y_prob[0][0]:.2f}')
print(f'1일 확률 : {y_prob[0][1]:.2f}')
print(f'2일 확률 : {y_prob[0][2]:.2f}')
728x90
'파이썬 > 머신러닝 및 딥러닝' 카테고리의 다른 글
Python(Colab) 파이토치(Pytorch) + 데이터 로더 (2) | 2023.06.20 |
---|---|
Python(Colab) 파이토치(Pytorch) + 논리 회귀 (와인품종 예측) (0) | 2023.06.20 |
Python(Colab) 파이토치(Pytorch) + 논리 회귀 (0) | 2023.06.20 |
Python(Colab) 파이토치(Pytorch) + 다항 선형회귀 해보기 (0) | 2023.06.20 |
Python(Colab) 파이토치(Pytorch) + 단항 선형회귀 해보기 (0) | 2023.06.18 |