アットウィキロゴ

れんかん

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]
 
tr=0
while tr<100:
    tr=tr+1
    dx=[0,0,0]
 
    for i in range(3):
        dx[i]=dg(i,a)
 
    sig=0
    for i in range(3):
        sig=sig+dx[i]*dx[i]
 
    sig=math.sqrt(sig)
 
    e=-0.01*sumg(a)
 
    ax=[0,0,0]
    for i in range(3):
        ax[i]=a[i]+e*dx[i]/sig
 
    g1=sumg(a)
    g2=sumg(ax)
 
    if g2<g1:
       a=ax
for x1 in x: 
    print(f(a,x1))
最終更新:2018年02月14日 12:47