1. 파일 불러오기
import pandas as pd
temp_df = pd.read_csv('/content/drive/MyDrive/KDT v2/머신러닝과 딥러닝/ data/temps.csv', encoding='euc-kr')
temp_df
2. null값 확인
df.isna().sum()
# 결과값 =>
# 지점 0
# 지점명 0
# 일시 0
# 기온(°C) 3
# 지면온도(°C) 0
3. null값 제거
df.dropna(inplace=True)
4. x_data에 기온데이터 저장, y_data에 지면온도 데이터 저장
x_data = df[['기온(°C)']]
y_data = df[['지면온도(°C)']]
x_data = torch.FloatTensor(x_data.values)
y_data = torch.FloatTensor(y_data.values)
print(x_data.shape)
print(y_data.shape)
# 결과값 =>
# torch.Size([8779, 1])
# torch.Size([8779, 1])
5. scatter로 x_data, y_data 출력
plt.figure(figsize=(8, 6))
plt.scatter(x_data, y_data)
6. 입력과 출력이 1개인 선형모델 생성 및 SGD를 이용하여 옵티마이저 객체를 생성
model = nn.Linear(1, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.001)
print(list(model.parameters()))
# 출력값 =>
# [Parameter containing:
# tensor([[-0.6530]], requires_grad=True), Parameter containing:
# tensor([0.4092], requires_grad=True)]
7. 모델 학습 + 오차함수는 MSELoss()함수를 사용
epochs = 5000
for epoch in range(epochs + 1) :
y_pred = model(x_data)
loss = nn.MSELoss()(y_pred, y_data)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print(f'Epoch: {epoch}/{epochs} Loss: {loss: .6f}')
8. 학습된 파라미터 확인
print(list(model.parameters()))
# 결과값 =>
# [Parameter containing:
# tensor([[1.0857]], requires_grad=True), Parameter containing:
# tensor([0.8143], requires_grad=True)]
9. scatter로 x_data, y_data를 출력 후 예측된 선을 출력
# detach() : 텐서에서 다른 자료구조로 변환할 수 있는 함수
y_pred = model(x_data).detach().numpy()
plt.figure(figsize=(8, 6))
plt.scatter(x_data, y_data)
plt.scatter(x_data, y_pred)
'Study > 머신러닝과 딥러닝' 카테고리의 다른 글
[머신러닝과 딥러닝] 15. 파이토치로 구현한 논리회귀_2(경사하강법 + 와인 품종 예측) (1) | 2024.01.10 |
---|---|
[머신러닝과 딥러닝] 15. 파이토치로 구현한 논리회귀_1 (0) | 2024.01.10 |
[머신러닝과 딥러닝] 14. 파이토치로 구현한 선형회귀_1 (0) | 2024.01.09 |
[머신러닝과 딥러닝] 13. 파이토치(Pytorch) (1) | 2024.01.09 |
[머신러닝과 딥러닝] 12.KMeans (1) | 2024.01.08 |