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


(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


 

执行结果为:

>>> 

第 次调整后的权值:

[ 0.9  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 0.8  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 0.7  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 0.6  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 0.5  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 0.4  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 0.3  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 0.2  0.   0. ]

误差:1.000000

第 次调整后的权值:

[ 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



 

posted @ 2013-07-04 20:24  爱生活,爱编程  阅读(260)  评论(0编辑  收藏  举报