計算智慧型小作業 感知機分類

2021-09-05 10:39:05 字數 1426 閱讀 7683

設有兩個模式樣本集合

用感知機演算法設計兩個模式類的分類判決函式 

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維的資料...