in[5]中的錯(cuò)誤
請(qǐng)問 in[5]中,鍵入同樣代碼,然后運(yùn)行,為什么出現(xiàn)如下錯(cuò)誤? TypeError ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)
in() ----> 1 ppn=Perceptron(eta = 0.1,n_iter = 10) ? ? TypeError: __init__() got an unexpected keyword argu
2018-01-23
第一段改為如下寫法,具體原因可以對(duì)照得出:
import numpy as np
class Perceptron(object):
? ? """
? ? eta:學(xué)習(xí)率
? ? n_iter:權(quán)重向量的訓(xùn)練次數(shù)
? ? 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;
? ? ? ? pass
? ? def fit(self, X, y):
? ? ? ? """
? ? ? ? 輸入訓(xùn)練數(shù)據(jù),培訓(xùn)神經(jīng)元,X輸入樣本向量,y對(duì)應(yīng)樣本分類
? ? ? ? X:shape[n_samples, n_features]
? ? ? ? X:[[1,2,3], [4,5,6]]
? ? ? ? n_samples:2
? ? ? ? n_features:3
? ? ? ? y:[1,-1]
? ? ? ? """
? ? ? ? """
? ? ? ? 初始化權(quán)重向量為0
? ? ? ? 加一是因?yàn)榍懊嫠惴ㄌ岬降膚0,也就是步調(diào)函數(shù)閾值
? ? ? ? """
? ? ? ? self.w_ = np.zeros(1 + X.shape[1]);
? ? ? ? self.errors_ = [];
? ? ? ? for _ in range(self.n_iter) :
? ? ? ? ? ? errors = 0
? ? ? ? ? ? """
? ? ? ? ? ? X:[[1,2,3], [4,5,6]]
? ? ? ? ? ? y:[1,-1]
? ? ? ? ? ? zi(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是一個(gè)向量
? ? ? ? ? ? ? ? update * xi 等價(jià):
? ? ? ? ? ? ? ? [▽W(xué)(1) = X[1]*update, ▽w(2) = X[2]*update, ▽w(3) = X[3]*update]
? ? ? ? ? ? ? ? """
? ? ? ? ? ? ? ? self.w_[1:] += update * xi
? ? ? ? ? ? ? ? self.w_[0] += update;
? ? ? ? ? ? ? ? errors += int(update != 0.0)
? ? ? ? ? ? ? ? self.errors_.append(errors)
? ? ? ? ? ? ? ? pass
? ? ? ? ? ? pass
? ? ? ? pass
? ? def net_input(self, X):
? ? ? ? ? ? """
? ? ? ? ? ? z = W0*1 + W1*X1 +.... Wn*Xn
? ? ? ? ? ? """
? ? ? ? ? ? return np.dot(X, self.w_[1:]) + self.w_[0]
? ? ? ? ? ? pass
? ? def predict(self, X):
? ? ? ? ? ? return np.where(self.net_input(X) >= 0.0 , 1, -1)
? ? ? ? ? ? pass
? ? pass
2017-12-19
提示的錯(cuò)誤為類型錯(cuò)誤,說在init的構(gòu)造函數(shù)運(yùn)行時(shí),給出了一個(gè)意外的關(guān)鍵字,可以查看代碼中的關(guān)鍵字參數(shù)是否一致,也可以把源碼顯示出來,供他人查看,來幫助找出問題