import math
x=[[1,2],[3,4],[5,6],[7,8],[9,10]]
y=[0,0,0,1,1]
a=[0.2,0.4,0.5]
def f(ax):
ys=[]
for x1 in x:
yy=a[0]
for i in range(2):
yy=yy+ax[i+1]*x1[i]
ys.append(yy)
return ys
def g(ys):
z=0
for i in range(len(y)):
g1=1+math.exp(-ys[i])
g2=1/g1
z=z+(y[i]-g2)*(y[i]-g2)
return z
def dg(j):
y0=f(a)
g0=g(y0)
h=0.01
ax=a
ax[j]=ax[j]+h
y1=f(ax)
g1=g(y1)
return (g1-g0)/h
mode=0
tr=0
while mode<100:
tr=tr+1
d=[0,0,0]
for i in range(3):
d[i]=dg(i)
ys=f(a)
g0=g(ys)
delta=-g0/100
de=0
for d1 in d:
de=de+d1*d1
h=delta/de
asp=[0.0,0.0,0.0]
for i in range(3):
asp[i]=a[i]+d[i]*h
ys=f(asp)
g1=g(ys)
if g1<g0:
a=asp
if g1>g0:
mode=100
if tr>20:
mode=100
print(a)
最終更新:2018年01月05日 14:15