麻煩大神幫我看一下這段代碼的錯(cuò)誤在哪里
代碼如下:
import?numpy?as?np class?Perceptron(object): ????def?__init__(self,eta=0.01,n_iter=2): ????????self.eta=eta ????????self.n_iter=n_iter ????def?fit(self,x,y): ????????self.w_=np.zeros(1+x.shape[1]) ????????self.errors_=[] ????????for?t?in?range(0,self.n_iter): ????????????errors=0 ????????for?k,target?in?zip(x,y): ????????????update=self.eta?*?(target-self.predict(k)) ????????????self.w_[1:]+=update?*?k ????????????self.w_[0]+=update ????????????errors+=np.where(update==0.0,1,-1) ????????????if?errors?>?x.shape[0]: ????????????????return?(self.w_) ????????????else: ????????????????self.errors_.append(errors) ????def?net_input(self,x): ????????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) P1=Perceptron() x1?=?[[0,1,2],[0,0,0]] x2=np.array(x1) print(x2) y1=np.array([1,-1]) print(x2.shape) L1=P1.fit(x2,y1) print(L1) print(x2) 謝謝大神,請(qǐng)求對(duì)代碼進(jìn)行指點(diǎn)修改,當(dāng)前對(duì)于輸入的數(shù)據(jù),得到的返回權(quán)值是None,請(qǐng)問原因是什么,怎么修改,萬(wàn)分感謝!
2018-08-04
errors+=np.where(update==0.0,1,-1)和 errors+=int(update!=0.0)不一樣? (update!=0.0)只有0和1兩種取值
下面的你的代碼我理解不清楚,所以我是覺得可能是這個(gè)地方錯(cuò)誤,僅供參考
2020-07-20
記得點(diǎn)個(gè)贊哦