基於python的感知機

2022-06-12 20:33:07 字數 2040 閱讀 8639

一、

1、感知機可以描述為乙個線性方程,用python的偽**可表示為:

sum(weight_i * x_i) + bias -> activation  #activation表示啟用函式,x_i和weight_i是分別為與當前神經元連線的其它神經元的輸入以及連線的權重。bias表示當前神經元的輸出閥值(或稱偏置)。箭頭(->)左邊的資料,就是啟用函式的輸入

2、定義啟用函式f:

def func_activator(input_value):

return 1.0 if input_value >= 0.0 else 0.0

二、感知機的構建

class perceptron(object):

def __init__(self, input_para_num, acti_func):

self.activator = acti_func

self.weights = [0.0 for _ in range(input_para_num)]

def __str__(self):

return 'final weights\n\tw0 = \n\tw1 = \n\tw2 = ' \

.format(self.weights[0],self.weights[1],self.weights[2])

def predict(self, row_vec):

act_values = 0.0

for i in range(len(self.weights)):

act_values += self.weights [ i ] * row_vec [ i ]

return self.activator(act_values)

def train(self, dataset, iteration, rate):

for i in range(iteration):

for input_vec_label in dataset:

prediction = self.predict(input_vec_label)

self._update_weights(input_vec_label,prediction, rate)

def _update_weights(self, input_vec_label, prediction, rate):

delta = input_vec_label[-1] - prediction

for i in range(len(self.weights):

self.weights[ i ] += rate * delta * input_vec_label[ i ]

def func_activator(input_value):

return 1.0 if input_value >= 0.0 else 0.0

def get_training_dataset():

dataset = [[-1, 1, 1, 1], [-1, 0, 0, 0], [-1, 1, 0, 0], [-1, 0, 1, 0]]

return dataset

def train_and_perceptron():

p = perceptron(3, func_activator)

dataset = get_training_dataset()

return p

if __name__ == '__main__':

and_prerception = train_and_perceptron

print(and_prerception)

print('1 and 1 = %d' % and_perception.predict([-1, 1, 1]))

print('0 and 0 = %d' % and_perception.predict([-1, 1, 1]))

print('1 and 0 = %d' % and_perception.predict([-1, 1, 1]))

print('0 and 1 = %d' % and_perception.predict([-1, 1, 1]))

基於sklearn的感知機python3

首先,本文還是選用python裡面自帶的digits資料集 from sklearn.datasets import load digits digits load digits 資料標準化 from sklearn.preprocessing import standardscaler scale...

python實現感知機

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 定義訓練函式,包...

python實現AND感知機

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