python實現感知機

2021-08-23 12:39:42 字數 1241 閱讀 9813

import numpy as np

#定義啟用函式

def acti_fun(x):

return 1 if x > 0 else 0

#建立感知器類

class perception(object):

#初始化權重

def __init__(self):

self.weights = 0

self.bias = 1

#定義訓練函式,包括訓練次數iter,學習率rate

def train(self,input_vecs,labels,iter,rate):

for i in range(iter):

for input_vec,label in zip(input_vecs,labels):

output = acti_fun(sum(np.array(input_vec) * self.weights) + self.bias)

bias = label - output

#更新權重

self.weights += rate*bias*np.array(input_vec)

self.bias += rate*bias

return self.weights,self.bias

#定義**函式

def predict(self,input_data):

input_data = np.array(input_data)

pred =

for each in input_data:

pred_each = acti_fun(sum(np.array(each)*np.array(self.weights)) + self.bias)

return pred

#測試if __name__=='__main__':

input_vecs = [[1,1],[1,0],[0,1],[0,0]]

labels = [1,0,0,0]

inputdata = [[-1,0],[1,1]] #可以單個[1,0],也可以多個[[-1,0],[1,1]]

inputdata = np.mat(inputdata)

p = perception()

p.train(input_vecs,labels,50,0.1)

predict = p.predict(inputdata)

print(predict)

python實現AND感知機

and感知機通過訓練後,可以進行邏輯 與 的運算。例如 當輸入 1,1時,輸出為1 輸入1,0時,輸出為0。通過上圖,我們可以發現 0,0 0,1 1,0 這三個點數表示輸出為0,而點 1,1 表示輸出為1,所以我們可以近似找到一條直線將輸出為0的點與輸出為1的點分隔開。我們可以通過不斷訓練係數 即...

感知機python實現

有用請點贊,沒用請差評。感知機原理參考部落格 演算法引用李航博士 統計學習方法 p29.感知機 import numpy as np import matplotlib.pyplot as plt class perceptron object def init self,eta 1,iter 50...

感知機(Python實現,簡單)

usr bin python coding utf 8 importrandom fromnumpyimport importnumpyasnp deftraining train data1 3,3,1 4,3,1 正樣本 train data2 1,1,1 負樣本 train datas tra...