본문 바로가기
CODING/Python

[데이터/Python] # 3 비표준화계수란

by 밍톨맹톨 2020. 8. 8.
728x90
728x90

 

[ 데이터 # 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)

Before
After

타이틀에 비표준화 계수를 넣어준 것을 볼 수 있다. 

 

결국 이 글에서

[ 기울기 A = 비표준화 계수 B = 코드에 있는 W ]

가 되는 것이다.

 

[ 데이터 # 2] 에서도 비표준화계수를 넣은 그래프

 

728x90

댓글