NameError: global name 'predict' is not defined 怎么解决?
谢谢采纳~
import numpy as npclass Perceptron(object): # 注释1 def __init__(self, eta = 0.01, n_iter = 10): self.eta = eta self.n_iter = n_iter def fit(self, X, y): # 注释2 self.w_ = np.zeros(1 + X.shape[1]) self.errors_ = [] for _ in range(self.n_iter): errors = 0 # 注释3 for xi, target in zip(X, y): update = self.eta * (target - self.predict(xi)) # 注释4 self.w_[1:] += update * xi self.w_[0] += update errors += int(update != 0.0) self.errors_.append(errors) def net_input(self, X): # 注释5 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)
外层同级什么意思?
解决了 首先要把net_input和predict函数放到fit函数外层 和fit函数同级 还有多次出现NameError...xxx is not defined,先检查函数名有没有写错,然后出现了TypeError检查一下你的__init__函数,注意是两个下划线__ 然后检查init 确保没有写成int 希望有帮助 这是我犯的一些错