[ 데이터 # 1 ] & [ 데이터 # 2] 에서 해결하지 못한 부분이 있었는데
바로 " 비표준화 계수 " 이다
말 자체가 생소하고 무엇을 의미하는 것인지 찾아봐도 뭔가 어려운 용어로 나와있어서 구하지 못했는데
결론적으로 말하자면
Y = AX + b 에서 A를 구하는 것
x값과 y값의 관계에 대해 말해줄 수 있는 것인데
만약 A값의 부호가 ➕ 일 때, X 의 값이 ⬆️ 이면 Y 의 값도 ⬆️
반대로 부호가 ➖ 일 때는 , X 의 값이 ⬆️ 일 때 Y 의 값은 ⬇️
이렇게 된다는 것은 잘 알 수 있는데 여기서 X는 독립변수 이고 Y는 종속변수에 해당한다.
사실 아직도 굳이 이 그래프에 이게 필요할 까 싶긴 하지만 일단 구하긴 구했다.
import torch
import torch.optim as optim
x = dino_data.loc[:,'dino_X']
y = dino_data.loc[:,'dino_Y']
x = torch.FloatTensor(np.array(x,dtype = float))
y = torch.FloatTensor(np.array(y,dtype = float))
일단 이전 글에서는 torch를 import 하지 않았지만 A를 구하기 위해서 torch를 import 한다
하지만 주피터 노트북을 사용한다면 torch를 import 했을 때
위와 같은 에러가 뜬다
설치하는 방법은 다음 글에 올리기로 하고 일단 설치했다면 위에 처럼 코드를 써준 뒤
W = torch.zeros(1,requires_grad = True)
b = torch.zeros(1,requires_grad = True)
optimizer = optim.Adam([W,b],lr = 1e-2)
epochs = 1000
for epoch in range(epochs + 1):
hypo = W * x + b
cost = ((y - hypo)**2).mean()
optimizer.zero_grad()
cost.backward()
optimizer.step()
if epoch % 100 == 0:
print('epoch {:4d}/{} cost : {:.6f}'.format(
epoch,epochs,cost.item()
))
print(W)
W를 구하는 방법인데 이것을 회귀분석이라고 한다.
회귀분석과 이 코드 대해서는 인공지능 폴더에 다시 정리해야겠다.
저렇게 쓰고 나면
이렇게 결과 값이 나오는데 그냥 이걸 [ 데이터 # 1 ] 에서 title부분에 format(float(W))를 넣어주면
plt.title('Datasaurus (B = {:.2f})'.format(float(W)),fontsize = 20)
타이틀에 비표준화 계수를 넣어준 것을 볼 수 있다.
결국 이 글에서
[ 기울기 A = 비표준화 계수 B = 코드에 있는 W ]
가 되는 것이다.
[ 데이터 # 2] 에서도 비표준화계수를 넣은 그래프
'CODING > Python' 카테고리의 다른 글
[Python/Flask] flask-restx를 이용한 CRUD구현 (1) : 가상환경 설치하기 (0) | 2021.11.23 |
---|---|
[Python] - 딕셔너리 key, value 서로 위치 바꾸는 법 (0) | 2021.11.05 |
[Python/Django] Mac 장고 venv로 가상환경 생성 (0) | 2021.08.08 |
[데이터/Python] # 2 산점도 행렬 (0) | 2020.08.01 |
[데이터/Python] # 1 데이터 저널리즘이란 (0) | 2020.07.31 |
댓글