计算智能小作业 感知机分类

感知机分类:

设有两个模式样本集合

用感知机算法设计两个模式类的分类判决函数 

python实现,但是由于一旦分类成功就停止,分类的显著性较低。

也没画图,尴尬。

 

    

def calW(a,b,w,bb,n):   #a 正集合 b负集合 w 系数 bb sigma n 学习系数// f 激活函数
    if len(a)==0 and len(b)==0:
        return False
    pnum=0  #处理元素的次数
    wnum=0  #w循环次数
    while True:
        for num in a:
            pnum=pnum+1
            Dval=mul(num,w,bb)
            if Dval<0:
                wnum=wnum+1
                w,bb=update(w,bb,n,Dval,num,1)
                print(w,wnum,bb,'\n')
                pnum=0
        for num in b:
            pnum=pnum+1
            Dval=mul(num,w,bb)
            if Dval>0:
                wnum=wnum+1
                w,bb=update(w,bb,n,Dval,num,0)
                print(w,bb,'\n')
                pnum=0
        if pnum>=len(a)+len(b):
            break
    return wnum
def mul(num,w,b):
    if not len(num)==len(w):
        return False
    sum=0
    for i in range(len(num)):
        sum=sum+num[i]*w[i]
    sum=sum+b
    return sum  
def update(w,b,n,Dval,num,flag):
    if flag:
        for i in range(len(w)):
            w[i]=w[i]+(1-Dval)*n*num[i]
            b=b+n*(1-Dval)
    else:
        for i in range(len(w)):
            w[i]=w[i]+(-1-Dval)*n*num[i] 
            b=b+n*(-1-Dval)
    return w,b
def main():
    a=[[2,1],[2,2],[3,2]]
    b=[[4,0],[5,0],[5,1]]
    n=0.1
    bb=0.2
    num=calW(a,b,[1000,1],bb,n)
    print(num)

main()

并说明,当权值向量     取不同初值时,激活函数不同时,对训练效果的影响及原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值