in[5]中的錯誤
請問 in[5]中,鍵入同樣代碼,然后運行,為什么出現如下錯誤? TypeError ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)
in() ----> 1 ppn=Perceptron(eta = 0.1,n_iter = 10) ? ? TypeError: __init__() got an unexpected keyword argu請問 in[5]中,鍵入同樣代碼,然后運行,為什么出現如下錯誤? TypeError ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)
in() ----> 1 ppn=Perceptron(eta = 0.1,n_iter = 10) ? ? TypeError: __init__() got an unexpected keyword argu2017-12-16
舉報
2018-01-23
第一段改為如下寫法,具體原因可以對照得出:
import numpy as np
class Perceptron(object):
? ? """
? ? eta:學習率
? ? n_iter:權重向量的訓練次數
? ? w_:神經分叉權重向量
? ? errors_:用于記錄神經元判斷出錯次數
? ? """
? ? def __init__(self, eta = 0.01, n_iter=10):
? ? ? ? self.eta = eta;
? ? ? ? self.n_iter = n_iter;
? ? ? ? pass
? ? def fit(self, X, y):
? ? ? ? """
? ? ? ? 輸入訓練數據,培訓神經元,X輸入樣本向量,y對應樣本分類
? ? ? ? X:shape[n_samples, n_features]
? ? ? ? X:[[1,2,3], [4,5,6]]
? ? ? ? n_samples:2
? ? ? ? n_features:3
? ? ? ? y:[1,-1]
? ? ? ? """
? ? ? ? """
? ? ? ? 初始化權重向量為0
? ? ? ? 加一是因為前面算法提到的w0,也就是步調函數閾值
? ? ? ? """
? ? ? ? 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是一個向量
? ? ? ? ? ? ? ? update * xi 等價:
? ? ? ? ? ? ? ? [▽W(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
提示的錯誤為類型錯誤,說在init的構造函數運行時,給出了一個意外的關鍵字,可以查看代碼中的關鍵字參數是否一致,也可以把源碼顯示出來,供他人查看,來幫助找出問題