您的位置:首页 > 理论基础 > 计算机网络

数学之路(3)-机器学习(3)-机器学习算法-神经网络[3]

2013-07-04 20:24 357 查看
(5)LMS最小均方差



Python的LMS算法部分为:

以逻辑或为例,下面是x和w初始权值

x = np.array([[1,1,1],[1,1,0],[1,0,1],[1,0,0]])
d =np.array([1,1,1,0])
w=np.array([b,0,0])

下面是LMS算法部分

#expect_e是期望误差率
#mycount为最大尝试次数
mycount=0
while True:

mye=0

i=0

for xn in x:

w,e=neww(w,d[i],xn,a)

i+=1

mye+=abs(e)

mycount+=1

print "第 %d 次调整后的权值:"%mycount

print w

print "误差:%f"%mye

if abs(mye)<expect_e or mycount>maxtrycount:break

#以下是验证部分

for xn in x:

print "%d and %d => %d "%(xn[1],xn[2],get_v(w,xn))

本博客所有内容是原创,未经书面许可,严禁任何形式的转载

http://blog.csdn.net/u010255642

执行结果为:

>>>

第 1 次调整后的权值:

[ 0.9 0. 0. ]

误差:1.000000

第 2 次调整后的权值:

[ 0.8 0. 0. ]

误差:1.000000

第 3 次调整后的权值:

[ 0.7 0. 0. ]

误差:1.000000

第 4 次调整后的权值:

[ 0.6 0. 0. ]

误差:1.000000

第 5 次调整后的权值:

[ 0.5 0. 0. ]

误差:1.000000

第 6 次调整后的权值:

[ 0.4 0. 0. ]

误差:1.000000

第 7 次调整后的权值:

[ 0.3 0. 0. ]

误差:1.000000

第 8 次调整后的权值:

[ 0.2 0. 0. ]

误差:1.000000

第 9 次调整后的权值:

[ 0.1 0. 0. ]

误差:1.000000

第 10 次调整后的权值:

[ 1.38777878e-16 0.00000000e+00 0.00000000e+00]

误差:1.000000

第 11 次调整后的权值:

[-0.1 0. 0. ]

误差:1.000000

第 12 次调整后的权值:

[-0.1 0.1 0.1]

误差:2.000000

第 13 次调整后的权值:

[-0.1 0.1 0.1]

误差:0.000000

1 and 1 => 1

1 and 0 => 1

0 and 1 => 1

0 and 0 => 0

>>>

我们换一个分类

输入矩阵中x向量的整除结果为6为一类,为3是另一类

x = np.array([[1,1,6],[1,2,12],[1,3,9],[1,8,24]])
d =np.array([1,1,-1,-1])
w=np.array([b,0,0])


分类效果不错

第 1 次调整后的权值:
[ 0.8 -0.6 -1.8]
误差:2.000000
第 2 次调整后的权值:
[ 1.00000000e+00 -6.00000000e-01 4.44089210e-16]
误差:6.000000
第 3 次调整后的权值:
[ 0.8 -2.4 -4.2]
误差:6.000000
第 4 次调整后的权值:
[ 1.2 -1.8 -0.6]
误差:4.000000
第 5 次调整后的权值:
[ 1.2 -2.2 -1.2]
误差:4.000000
第 6 次调整后的权值:
[ 1.4 -2.2 0.6]
误差:6.000000
第 7 次调整后的权值:
[ 1.2 -2.8 -1.2]
误差:2.000000
第 8 次调整后的权值:
[ 1.4 -2.8 0.6]
误差:6.000000
第 9 次调整后的权值:
[ 1.4 -2.8 0.6]
误差:0.000000
1 and 6 => 1
2 and 12 => 1
3 and 9 => -1
8 and 24 => -1
9 and 27 => -1
11 and 66 => 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: