import math
def dg(m,a1):
h=0.01
g1=sumg(a1)
a2=[]
for ap in a1:
a2.append(ap)
a2[m]=a2[m]+h
g2=sumg(a2)
return (g2-g1)/h
def sumg(a1):
z=0
for i in range(len(x)):
z=z+(y[i]-g(a1,x[i]))*(y[i]-g(a1,x[i]))
return z
def g(a1,x1):
f1=f(a1,x1)
g1=1/(1+math.exp(-f1))
return g1
def f(a1,x1):
f1=a1[0]
for i in range(len(x1)):
f1=f1+a1[i+1]*x1[i]
return f1
y=[0,0,0,1,1]
x=[[1,2],[3,4],[5,6],[7,8],[9,10]]
a=[0.1,0.2,0.3]
for tr in range(100):
dx=[]
for i in range(3):
dx.append(dg(i,a))
dy=0.01*sumg(a)
dz=0
for i in range(3):
dz=dz+dx[i]*dx[i]
dz=math.sqrt(dz)
sig=[]
for i in range(3):
sig.append(dy*dx[i]/dz)
asx=[]
for i in range(3):
asx.append(a[i]-sig[i])
g1=sumg(a)
g2=sumg(asx)
if g2<g1:
for i in range(3):
a[i]=asx[i]
print(a)
最終更新:2018年02月11日 15:08