Skip to content

Instantly share code, notes, and snippets.

Created September 17, 2009 06:45
Show Gist options
  • Save anonymous/188381 to your computer and use it in GitHub Desktop.
Save anonymous/188381 to your computer and use it in GitHub Desktop.
#!/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()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment