Skip to content

Instantly share code, notes, and snippets.

Created September 17, 2009 06:45
Show Gist options
  • Select an option

  • Save anonymous/188381 to your computer and use it in GitHub Desktop.

Select an option

Save anonymous/188381 to your computer and use it in GitHub Desktop.

Revisions

  1. @invalid-email-address Anonymous created this gist Sep 17, 2009.
    72 changes: 72 additions & 0 deletions gistfile1.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,72 @@
    #!/usr/bin/env python
    import urllib
    import math

    def p(str):
    print(str)

    def single_perception():
    try:
    fi = urllib.urlopen("http://aoki2.si.gunma-u.ac.jp/R/lr.data")
    data = fi.read()
    except IOError:
    print("url can't open")
    return

    data2 = []
    dd2 = data.split('\r')
    header = dd2.pop(0).split()
    for dd in dd2[1:]:
    dd3 = dd.split()
    if(len(dd3) < 3): continue
    #print dd3
    dd3[0] = float(dd3[0]) / 1000
    dd3[1] = float(dd3[1]) / 1000
    dd3[2] = float(dd3[2])
    data2.append(dd3)

    header = data2.pop(0)
    """p("header:"),
    p(header)
    p( data2 )"""


    def perception(x1,x2,a0,a1,a2):
    s = a0 + a1*x1 + a2*x2
    o = math.exp(s)/(1+math.exp(s))
    return o

    def deda0(data,a0,a1,a2):
    tmp_a = 0
    for dd in data:
    (x1, x2, y) = dd
    tmp_a += y-perception(x1,x2,a0,a1,a2)
    return tmp_a

    def deda1(data,a0,a1,a2):
    tmp_a = 0
    for dd in data:
    (x1, x2, y) = dd
    tmp_a += (y-perception(x1,x2,a0,a1,a2)) * x1
    return tmp_a

    def deda2(data,a0,a1,a2):
    tmp_a = 0
    for dd in data:
    (x1, x2, y) = dd
    tmp_a += (y-perception(x1,x2,a0,a1,a2)) * x2
    return tmp_a

    a0 = 0.1
    a1 = 0.1
    a2 = 0.1
    alpha = 0.1
    for i in range(100000):
    a0 = a0 + alpha * deda0(data2,a0,a1,a2)
    a1 = a1 + alpha * deda1(data2,a0,a1,a2)
    a2 = a2 + alpha * deda2(data2,a0,a1,a2)

    p("a0,a1,a2=%f,%f,%f" % ( a0, a1, a2 ))

    if __name__ == "__main__":
    single_perception()