赞
踩
设有两个模式样本集合
用感知机算法设计两个模式类的分类判决函数
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()
并说明,当权值向量 取不同初值时,激活函数不同时,对训练效果的影响及原因。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。