반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

sklearn.오류값 찾기 본문

[AI]/python.sklearn

sklearn.오류값 찾기

givemebro 2020. 4. 8. 10:04
반응형

https://broscoding.tistory.com/112

 

머신러닝.수치근사법

import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs data,label=make_blobs(n_samples=500,centers=[[0,0]]) data plt.hlines([0],-10,10,linestyles=':') plt.vlines(..

broscoding.tistory.com

X=np.random.randn(500)*5 # 곱하는 수의 절댓값이 커질수록 직선에 가까워진다.
y=X+np.random.randn(500) # 곱하는 수에 따라 회전(기울기 개념)
pred_y=2*X # 기울기를 변경해 가며 오류값이 작아지는 곳을 찾는다.
cost=((y-pred_y)**2).mean()
plt.hlines([0],-10,10,linestyles=':')
plt.vlines([0],-10,10,linestyles=':')
plt.scatter(X,y,alpha=0.3)
plt.plot(X,pred_y,'r--')
plt.axis('scaled')
cost #27.407466311085017

pred_y=0*X # 기울기를 변경해 가며 오류값이 작아지는 곳을 찾는다.
cost=((y-pred_y)**2).mean()
plt.hlines([0],-10,10,linestyles=':')
plt.vlines([0],-10,10,linestyles=':')
plt.scatter(X,y,alpha=0.3)
plt.plot(X,pred_y,'r--')
plt.axis('scaled')
cost #26.189673264319485

pred_y=1*X # 기울기를 변경해 가며 오류값이 작아지는 곳을 찾는다.
cost=((y-pred_y)**2).mean()
plt.hlines([0],-10,10,linestyles=':')
plt.vlines([0],-10,10,linestyles=':')
plt.scatter(X,y,alpha=0.3)
plt.plot(X,pred_y,'r--')
plt.axis('scaled')
cost #1.0063384580396453

ws=np.arange(0,2.001,0.000001) # 정밀도
costs=[]
min_cost=np.inf
min_w=None

for w in ws:
    pred_y=X*w
    cost=((pred_y-y)**2).mean()
    costs.append(cost)
    
    if cost<min_cost:
        min_cost=cost
        min_w=w
        
display(min_w,min_cost)
0.988196
1.0027447889672905

 

pred_y=min_w*X # 기울기 : min_w
cost=((y-pred_y)**2).mean()
plt.hlines([0],-10,10,linestyles=':')
plt.vlines([0],-10,10,linestyles=':')
plt.scatter(X,y,alpha=0.3)
plt.plot(X,pred_y,'r--')
plt.axis('scaled')
cost #1.0027447889672905

plt.plot(ws,costs,'o-')
plt.xticks(ws,rotation=60)
plt.xlabel('w',fontsize=20)
plt.ylabel('cost',fontsize=20)
​

 

반응형
Comments