附 第三章作业
作业(1)
题目
在一个10类的模式识别问题中,有3类单独满足多类情况1,其余的类别满足多类情况2。问该模式识别问题所需判别函数的最少数目是多少?
解
对于3类满足情况1的,将剩下的7类合看作一类,则实际上是4分类问题,需要4个判别函数
剩下7个类别为情况2,需要条判别函数
故总共需要:
这里24个也是可以的,不再做一次额外的判断
作业(2)
题目
一个三类问题,其判别函数如下:
设这些函数是在多类情况1条件下确定的,绘出其判别界面和每一个模式类别的区域。
设为多类情况2,并使:。绘出其判别界面和多类情况2的区域。
设和是在多类情况3的条件下确定的,绘出其判别界面和每类的区域。
解
Q1
Q2
Q3
作业(3)
题目
两类模式,每类包括 5 个 3 维不同的模式向量,且良好分布。如果它们是线性可分的,问权向量至少需要几个系数分量?
假如要建立二次的多项式判别函数,又至少需要几个系数分量?(设模式的良好分布不因模式变化而改变)
解
代入公式
则当线性可分时,r=1,n=3,=4
当采用二次多项式判别函数时,r=2,n=3,=10
只看维度与最高幂
作业(4)
题目
用感知器算法求下列模式分类的解向量:
解
首先讲属于的样本乘以-1,写成增广形式:
接下来开始迭代,感知器算法的一般表达:
由于步数较多,此处直接给出程序运行结果:
[[0. 0. 0. 1.] [1. 0. 0. 1.] [1. 0. 1. 1.] [1. 1. 0. 1.] [0. 0. 1. 1.] [0. 1. 1. 1.] [0. 1. 0. 1.] [1. 1. 1. 1.]]
init w=[0. 0. 0. 0.]
epoch0: for x0=[0. 0. 0. 1.],label=1, now w=[0. 0. 0. 0.], predicted_label=0.0,update w=[0. 0. 0. 1.] for x1=[1. 0. 0. 1.],label=1, now w=[0. 0. 0. 1.], predicted_label=1.0,keep w for x2=[1. 0. 1. 1.],label=1, now w=[0. 0. 0. 1.], predicted_label=1.0,keep w for x3=[1. 1. 0. 1.],label=1, now w=[0. 0. 0. 1.], predicted_label=1.0,keep w for x4=[0. 0. 1. 1.],label=-1, now w=[0. 0. 0. 1.], predicted_label=1.0,update w=[ 0. 0. -1. 0.] for x5=[0. 1. 1. 1.],label=-1, now w=[ 0. 0. -1. 0.], predicted_label=-1.0,keep w for x6=[0. 1. 0. 1.],label=-1, now w=[ 0. 0. -1. 0.], predicted_label=0.0,update w=[ 0. -1. -1. -1.] for x7=[1. 1. 1. 1.],label=-1, now w=[ 0. -1. -1. -1.], predicted_label=-1.0,keep w epoch1: for x0=[0. 0. 0. 1.],label=1, now w=[ 0. -1. -1. -1.], predicted_label=-1.0,update w=[ 0. -1. -1. 0.] for x1=[1. 0. 0. 1.],label=1, now w=[ 0. -1. -1. 0.], predicted_label=0.0,update w=[ 1. -1. -1. 1.] for x2=[1. 0. 1. 1.],label=1, now w=[ 1. -1. -1. 1.], predicted_label=1.0,keep w for x3=[1. 1. 0. 1.],label=1, now w=[ 1. -1. -1. 1.], predicted_label=1.0,keep w for x4=[0. 0. 1. 1.],label=-1, now w=[ 1. -1. -1. 1.], predicted_label=0.0,update w=[ 1. -1. -2. 0.] for x5=[0. 1. 1. 1.],label=-1, now w=[ 1. -1. -2. 0.], predicted_label=-1.0,keep w for x6=[0. 1. 0. 1.],label=-1, now w=[ 1. -1. -2. 0.], predicted_label=-1.0,keep w for x7=[1. 1. 1. 1.],label=-1, now w=[ 1. -1. -2. 0.], predicted_label=-1.0,keep w epoch2: for x0=[0. 0. 0. 1.],label=1, now w=[ 1. -1. -2. 0.], predicted_label=0.0,update w=[ 1. -1. -2. 1.] for x1=[1. 0. 0. 1.],label=1, now w=[ 1. -1. -2. 1.], predicted_label=1.0,keep w for x2=[1. 0. 1. 1.],label=1, now w=[ 1. -1. -2. 1.], predicted_label=0.0,update w=[ 2. -1. -1. 2.] for x3=[1. 1. 0. 1.],label=1, now w=[ 2. -1. -1. 2.], predicted_label=1.0,keep w for x4=[0. 0. 1. 1.],label=-1, now w=[ 2. -1. -1. 2.], predicted_label=1.0,update w=[ 2. -1. -2. 1.] for x5=[0. 1. 1. 1.],label=-1, now w=[ 2. -1. -2. 1.], predicted_label=-1.0,keep w for x6=[0. 1. 0. 1.],label=-1, now w=[ 2. -1. -2. 1.], predicted_label=0.0,update w=[ 2. -2. -2. 0.] for x7=[1. 1. 1. 1.],label=-1, now w=[ 2. -2. -2. 0.], predicted_label=-1.0,keep w epoch3: for x0=[0. 0. 0. 1.],label=1, now w=[ 2. -2. -2. 0.], predicted_label=0.0,update w=[ 2. -2. -2. 1.] for x1=[1. 0. 0. 1.],label=1, now w=[ 2. -2. -2. 1.], predicted_label=1.0,keep w for x2=[1. 0. 1. 1.],label=1, now w=[ 2. -2. -2. 1.], predicted_label=1.0,keep w for x3=[1. 1. 0. 1.],label=1, now w=[ 2. -2. -2. 1.], predicted_label=1.0,keep w for x4=[0. 0. 1. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w for x5=[0. 1. 1. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w for x6=[0. 1. 0. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w for x7=[1. 1. 1. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w epoch4: for x0=[0. 0. 0. 1.],label=1, now w=[ 2. -2. -2. 1.], predicted_label=1.0,keep w for x1=[1. 0. 0. 1.],label=1, now w=[ 2. -2. -2. 1.], predicted_label=1.0,keep w for x2=[1. 0. 1. 1.],label=1, now w=[ 2. -2. -2. 1.], predicted_label=1.0,keep w for x3=[1. 1. 0. 1.],label=1, now w=[ 2. -2. -2. 1.], predicted_label=1.0,keep w for x4=[0. 0. 1. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w for x5=[0. 1. 1. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w for x6=[0. 1. 0. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w for x7=[1. 1. 1. 1.],label=-1, now w=[ 2. -2. -2. 1.], predicted_label=-1.0,keep w w = [ 2. -2. -2. 1.]
最终得到权向量为,故判别函数为:
上述结果的代码如下:
作业(5)
题目
用多类感知器算法求下列模式的判别函数:
解
由于递推字数较多,此处仍然直接给出程序运行结果:
[[-1. -1. 1.] [ 0. 0. 1.] [ 1. 1. 1.]]
init w= [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
epoch0: for x1=[-1. -1. 1.], now w=[0. 0. 0. 0. 0. 0. 0. 0. 0.], max_label=[0 1 2], update w=[-1. -1. 1. 1. 1. -1. 1. 1. -1.]
for x2=[0. 0. 1.], now w=[-1. -1. 1. 1. 1. -1. 1. 1. -1.], max_label=[0], update w=[-1. -1. 0. 1. 1. 0. 1. 1. -2.]
for x3=[1. 1. 1.], now w=[-1. -1. 0. 1. 1. 0. 1. 1. -2.], max_label=[1], update w=[-2. -2. -1. 0. 0. -1. 2. 2. -1.]
epoch1: for x1=[-1. -1. 1.], now w=[-2. -2. -1. 0. 0. -1. 2. 2. -1.], max_label=[0], keep w
for x2=[0. 0. 1.], now w=[-2. -2. -1. 0. 0. -1. 2. 2. -1.], max_label=[0 1 2], update w=[-2. -2. -2. 0. 0. 0. 2. 2. -2.]
for x3=[1. 1. 1.], now w=[-2. -2. -2. 0. 0. 0. 2. 2. -2.], max_label=[2], keep w
epoch2: for x1=[-1. -1. 1.], now w=[-2. -2. -2. 0. 0. 0. 2. 2. -2.], max_label=[0], keep w
for x2=[0. 0. 1.], now w=[-2. -2. -2. 0. 0. 0. 2. 2. -2.], max_label=[1], keep w
for x3=[1. 1. 1.], now w=[-2. -2. -2. 0. 0. 0. 2. 2. -2.], max_label=[2], keep w
w = [[-2. -2. -2.] [ 0. 0. 0.] [ 2. 2. -2.]]
综上,得到的判别函数为:
所用程序如下:
最后更新于
这有帮助吗?