[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)


반응형