アットウィキロゴ

fujiwara

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=[[5,2],[7,4],[5,6],[1,8],[2,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]
 
for x1 in x:
    print(f(a,x1))
 
最終更新:2018年02月11日 15:13