設有兩個模式樣本集合
用感知機演算法設計兩個模式類的分類判決函式
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()
並說明,當權值向量 取不同初值時
,啟用函式不同時,對訓練效果的影響及原因。
感知機分類學習
感知機 perceptron 是一種二類分類的線性分類模型,也就是說,使用於將資料分成兩類的,並且資料要線性可分的情況。線性可分是指存在乙個超平面能夠將空間分成兩部分,每一部分為一類,感知機的目的就在於找這樣的乙個超平面。假設輸入資料形式為x x1,x2.xn 即所謂的特徵向量。y代表輸入資料的類別...
分類演算法 感知機(Perceptron)
感知機演算法是一類二分類演算法,其問題描述為,給定乙個訓練資料集 t 其中 x i in mathbb n,y i in i 1,2,cdots,n 求引數 w,b 使得以下損失函式極小化問題的解 min l w,b min sum y i w cdot x i b 其中 m 為誤分類點的集合。下一...
《模式識別與智慧型計算》感知機模型
感知機模型 按照統計學三要素來寫的話 模型 符號函式 策略 損失函式 誤點到超平面的距離之和 演算法 利用梯度下降演算法進行求解 感知機原理 感知機模型用來線性判別資料集,什麼意思呢就是用一超平面來隔斷兩個不同的類別,超平面在二維的資料集中就是一條直線,在三維的資料集中就是乙個平面,假設有n維的資料...