-
大小: 7KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-14
- 語言: Python
- 標(biāo)簽: python??感知器??神經(jīng)網(wǎng)絡(luò)??anaconda??
資源簡介
根據(jù)慕課網(wǎng)“機(jī)器學(xué)習(xí)-實(shí)現(xiàn)簡單神經(jīng)網(wǎng)絡(luò)”編寫的python代碼,實(shí)驗(yàn)環(huán)境為anaconda python3.6,感知器算法進(jìn)行分類,數(shù)據(jù)為網(wǎng)上的花瓣數(shù)據(jù),100個(gè)樣本

代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
import?numpy?as?np
class?Perceptron(object):
????“““
????eta:?學(xué)習(xí)率(01)一般是使用者自定義,然后根據(jù)經(jīng)驗(yàn)調(diào)整
????n_iter:?權(quán)重向量的訓(xùn)練次數(shù),這里只訓(xùn)練10次
????w_:?神經(jīng)分叉權(quán)重向量
????errors_:?用于記錄神經(jīng)元判斷錯(cuò)誤的次數(shù)
????“““
????def?__init__(self?eta=0.01?n_iter=10):
????????self.eta?=?eta
????????self.n_iter?=?n_iter
????????
????def?fit(self?x?y):
????????“““
????????輸入訓(xùn)練數(shù)據(jù),訓(xùn)練神經(jīng)元
????????x:?輸入樣本的向量
????????y:?樣本對應(yīng)的分類
????????x:?shape[n_sample?n_features]:?樣本數(shù)量,每個(gè)樣本的特征維度
????????x:[[123][456]],有2個(gè)樣本,每個(gè)樣本有3個(gè)特征
????????“““
????????#初始化權(quán)重向量的每個(gè)分量,這里初始化的值為0
????????#+1是為了w0,權(quán)重向量W的維度加1,多出的那一維用于計(jì)算激活函數(shù)的閾值
????????self.w_?=?np.zeros(1+x.shape[1])
????????self.errors_?=?[]
????????
????????“““
????????開始訓(xùn)練
????????每次出現(xiàn)預(yù)測錯(cuò)誤的時(shí)候,把樣本重新輸入神經(jīng)元,更新權(quán)重向量
????????這里設(shè)置的迭代次數(shù)我n_iter=10
????????如果迭代10次都無法分類正確,則終止
????????“““
????????for?_?in?range(self.n_iter):
????????????errors?=?0
????????????“““
????????????x:[[123][456]]
????????????y:[1-1]
????????????zip(xy):?[([1?2?3]?1)?([4?5?6]?-1)]
????????????“““
????????????for?xi?target?in?zip(x?y):
????????????????update?=?self.eta?*?(target?-?self.predict(xi))
????????????????
????????????????#xi是向量,target是實(shí)數(shù)
????????????????#更新權(quán)值
????????????????self.w_[1:]?+=?update?*?xi
????????????????
????????????????#更新閾值
????????????????self.w_[0]?+=?update;
????????????????
????????????????“““
????????????????統(tǒng)計(jì)預(yù)測的錯(cuò)誤次數(shù)
????????????????int(True)=1
????????????????int(False)=0
????????????????“““
????????????????errors?+=?int(update?!=0.0)
????????????????self.errors_.append(errors)
????????????????
????def?net_input(self?x):
????????“““
????????輸入向量與權(quán)重向量做點(diǎn)積求和
????????“““
????????return?np.dot(x?self.w_[1:])?+?self.w_[0]
????????????
????def?predict(selfx):
????????“““
????????激活函數(shù)得到輸出為1或-1的分類
????????大于等于0輸出為1
????????小于0輸出為-1
????????“““
????????return?np.where(self.net_input(x)?>=?0.0??1-1)
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2492??2017-09-17?20:21??neuralnetwork\ganzhiqi.py
?????文件????????837??2017-09-18?15:05??neuralnetwork\main.py
?????文件????????786??2017-09-17?22:05??neuralnetwork\matplotlib.py
?????文件???????1691??2017-09-18?14:58??neuralnetwork\matplotlib_listencolormap.py
?????文件????????459??2017-09-17?20:33??neuralnetwork\pandas.py
?????文件???????4700??2017-09-16?15:44??neuralnetwork\test.csv
?????文件????????552??2017-09-18?13:36??neuralnetwork\use_ganzhiqi.py
?????文件???????1994??2017-09-18?13:29??neuralnetwork\__pycache__\ganzhiqi.cpython-36.pyc
?????文件???????1261??2017-09-18?15:01??neuralnetwork\__pycache__\matplotlib_listencolormap.cpython-36.pyc
?????目錄??????????0??2017-09-18?15:01??neuralnetwork\__pycache__
?????目錄??????????0??2017-09-18?15:18??neuralnetwork
-----------?---------??----------?-----??----
????????????????14772????????????????????11
評(píng)論
共有 條評(píng)論