日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最基本的感知器算法

發布時間:2024/9/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最基本的感知器算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import numpy as npclass Perceptron(object):"""eta: 學習率n_iter: 權重向量的訓練次數w_: 神經分叉權重向量errors_: 用于記錄神經元判斷出錯次數"""def __init__(self, eta = 0.01, n_iter = 10):self.eta = etaself.n_iter = n_iterpassdef fit(self, X, y):"""輸入訓練數據,培訓神經元,X表示輸入樣本, y對應該樣本的正確分類X: shape[n_samples, n_features]n_samples:表示有多少個訓練樣本數量n_features: 表示有多少個屬性例如:X: [[1,2,3], [4,5,6]] => n_samples=2;n_features=3y: [1, -1]表示第一個向量的分類是1, 第二個向量的分類是-1""""""首先初始化權重為0加一是因為激活函數w0的閾值"""self.w_ = np.zero(1 + X.shape[1])self.errors_ = []for _ in range(self.n_iter): errors = 0"""X:[[1,2,3], [4,5,6]]y:[1, -1]zip(X, y) => [[1,2,3,1], [4,5,6-1]]"""for xi, target in zip(X,y):"""update = η * (y-y')"""update = self.eta * (target - self.predict(xi))"""xi 是一個向量update 是一個常量update*xi 等價于 [Δw(1) = X[1]*update, Δw(2) = X[2]*update, Δw(3) = X[3]*update]"""# w_[1:]表示w忽略第0個元素,從第一個元素開始往后self.w_[1:] += update * xiself.w_[0] += updateerrors += int(update != 0.0)self.errors_.append(errors)passpassdef net_input(self, X):"""z = W0*1 + W1*X1 + W2*X2+ ...+ Wn*Xn"""return np.dot(X, self.w_[1:]) + self.w_[0]def predict(self, X):return np.where(self.net_input(X) >= 0.0 , 1, -1)

?

總結

以上是生活随笔為你收集整理的最基本的感知器算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。