import numpy as np
import math
def g():
g1=0
for i in range(number):
g1=g1+(y[i]-e[2][i])*(y[i]-e[2][i])
return g1
def f(ax):
for n in range(number_eq):
for i in range(number):
f1=ax[n][0]
for j in range(number_var):
n1=link[n][j+1]
f1=f1+ax[n][j+1]*e[n1][i]
n1=link[n][0]
e[n1][i]=1/(1+math.exp(-f1))
number=5
number_eq=1
number_var=2
x=[[1,2],[3,4],[5,6],[7,8],[9,10]]
y=[0,0,0,1,1]
link=[[2,0,1]]
e=np.zeros([3,5])
a=np.zeros([number_eq,number_var+1])
a[0][0]=0.4
a[0][1]=0.5
a[0][2]=0.7
for i in range(number):
e[0][i]=x[i][0]
e[1][i]=x[i][1]
ax=np.zeros([number_eq,number_var+1])
df=np.zeros([number_eq,number_var+1])
tr=1
while tr<500:
tr=tr+1
f(a)
g1=g()
for eq1 in range(number_eq):
for m in range(number_var+1):
for eq2 in range(number_eq):
for i in range(number_var+1):
ax[eq2][i]=a[eq2][i]
h=0.01
ax[eq1][m]=ax[eq1][m]+h
f(ax)
g2=g()
df[eq1][m]=(g2-g1)/h
sig=0
for eq1 in range(number_eq):
for m in range(number_var+1):
sig=sig+df[eq1][m]*df[eq1][m]
for eq1 in range(number_eq):
for m in range(number_var+1):
ax[eq1][m]=a[eq1][m]-0.01*g1*df[eq1][m]/sig
f(ax)
g2=g()
if g2<g1:
for eq1 in range(number_eq):
for m in range(number_var+1):
a[eq1][m]=ax[eq1][m]
if g2>g1:tr=1000
for i in range(number):
z=a[0][0]+a[0][1]*x[i][0]+a[0][2]*x[i][1]
print(z)
最終更新:2018年02月19日 22:31