感知器演算法

2021-07-05 21:26:52 字數 1327 閱讀 7338

# -*- coding: utf-8 -*-

"""created on thu oct 15 13:58:06 2015

@author: think

"""#感知器演算法

import mkdata as mk

import numpy as np

import matplotlib.pyplot as plt

n = 100 #生成測試點的數目

def check(item, y, w, b):

ans = w[0]*item[0] + w[1]*item[1] + b

ans *= y

if ans > 0:

return true

else:

return false

def perceptron(x,y):

iternums = 1000

m,n = x.shape

w = np.zeros(m)

b = 0

a = 0.01

for i in range(iternums):

for j in range(n):

if not check(x[:,j], y[0][j], w, b):

w = w + a * y[0][j]*x[:,j]

b += a*y[0][j]

return (w, b)

if __name__ == '__main__':

(x,y,w) = mk.mk_data(n) #是線性可分

#(x,y,w) = mk.mk_data(n,true) # 不是線性可分

plt.scatter(x[0,y[0]==1], x[1,y[0]==1], color='red')

plt.scatter(x[0,y[0]==-1], x[1,y[0]==-1], color='green')

w, b = perceptron(x, y)

x = np.arange(-2,2,0.1)

x2 = (-b-w[0]*x)/w[1]

plt.plot(x,x2)

plt.show()

mk_data函式的鏈結為:python生成測試資料點

如果是線性可分數據點,結果如下:

如果資料點不是線性可分的,效果如下:

感知器演算法

感知器演算法步驟 1.給出m個帶有標籤的樣本,其中yi 1 or 1 xi xi1,xi2,xin 2.將資料的標籤併入訓練樣本,形成增廣向量,每個資料的維數為n 1 3.在 0,1 均勻分布區間內生成1x n 1 權值矩陣w 4.將資料依次送入感知器進行學習。如果w data k,yk 0 說明訓...

感知器演算法

clc clear all fprintf 感知器演算法 n x 1,4,1 2,6,1 1,2,1 2,2,1 x 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 n,n size x 獲取樣本數目和維數 n為樣本數目...

感知器演算法

1.判別函式 統計模式識別分為聚類分析法和判決函式法,其中判決函式法又包括幾何分類法 確定性時間分類,線性,非線性 以及概率分類法 隨機事件分類 判別函式即用來對模式進行分類的準則函式。2 線性判別函式 n維線性判別函式的一般形式為 其中x,w不包含最後一項常數項 權向量,解向量,即引數向量 增廣向...