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

来源:互联网 发布:淘宝能更改实名认证吗 编辑:程序博客网 时间:2024/05/03 13:57


(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=0while 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